🚀 1.中秋节起源

序员过中秋,那是一个热闹_java

关于中秋节的起源,说法较多。中秋一词,最早见于《周礼》,《礼记·月令》上说:“仲秋之月养衰老,行糜中秋节粥饮食。”一说它起源于古代帝王的祭祀活动。《礼记》上记载:“天子春朝日,秋夕月”,夕月就是祭月亮,说明早在春秋时代,帝王就已开始祭月、拜月了。

序员过中秋,那是一个热闹_java_02

后来贵族官吏和文人学士也相继仿效,逐步传到民间。二是中秋节的起源和农业生产有关。秋天是收获的季节。“秋”字的解释是:“庄稼成熟曰秋”。八月中秋,农作物和各种果品陆续成熟,农民为了庆祝丰收,表达喜悦的心情,就以“中秋”这天作为节日。“中秋”就是秋天中间的意思,农历的八月是秋季中间的一个月,十五日又是这个月中间的一天,所以中秋节可能是古人“秋报”遗传下来的习俗。也有历史学家研究指出,中秋节起源应为隋末唐军于大业十三年八月十五日,唐军裴寂以圆月作为构思,成功发明月饼,并广发军中作为军饷,成功解决因大量吸收反隋义军而衍生之军粮问题。

最初“祭月节”的节期是在干支历二十四节气“秋分”这天,后来才调至夏历八月十五日。 中秋节与春节、清明节、端午节并称为中国四传统节日。受中华文化的影响,中秋节也是东亚和东南亚一些国家尤其是当地的华人华侨的传统节日。 2006年5月20日,国务院将其列入首批国家级非物质文化遗产名录。自2008年起中秋节被列为国家法定节假日

🚀 2.献礼中秋节

🌈 2.1 SQL算出中秋节日期

🚩 MySQL

>select 
year('2022-09-10') '年份',
month('2022-09-10') '月份',
weekofyear('2022-09-10') '本年周',
dayofyear('2022-09-10') '本年天',
DATE_FORMAT('2022-09-10', '%Y-%m-%d') '日期',
TIMESTAMPDIFF(YEAR,'2008-08-14', DATE_FORMAT('2022-09-10', '%Y-%m-%d')) '多少个中秋法定节假日'\G

序员过中秋,那是一个热闹_原力计划_03


🚩 Oracle

select
 to_char(to_date(‘20220910’,‘yyyy/mm/dd’), ‘yyyy’) 年份,
 to_char(to_date(‘20220910’,‘yyyy/mm/dd’), ‘MM’) 月份,
 to_char(to_date(‘20220910’,‘yyyy/mm/dd’),‘iw’) 本年周,
 to_char(to_date(‘20220910’,‘yyyy/mm/dd’),‘DDD’) 本年天,
 to_char(to_date(‘20220910’,‘yyyy/mm/dd’), ‘yyyy-mm-dd’) 日期,
 trunc(months_between(to_date(‘20220910’,‘yyyy/mm/dd’),to_date(‘20080814’,‘yyyymmdd’))/12) 多少个中秋法定节假日
 from dual;

序员过中秋,那是一个热闹_java_04

🚩 postgreSQL

select
 to_char(to_date(‘2022-09-10’,‘YYYY-MM-DD’),‘yyyy’) “年份”,
 to_char(to_date(‘2022-09-10’,‘YYYY-MM-DD’),‘mm’) “月份”,
 date_part(‘week’, to_date(‘2022-09-10’,‘YYYY-MM-DD’)) “本年周”,
 extract(doy from to_date(‘2022-09-10’,‘YYYY-MM-DD’)) “本年天”,
 to_char(to_date(‘2022-09-10’,‘YYYY-MM-DD’), ‘yyyy-mm-dd’) 日期,
 extract(‘year’ from to_date(‘2022-09-10’,‘YYYY-MM-DD’))-extract(‘year’ from to_date(‘2008-08-14’, ‘YYYY-MM-DD’)) 多少个中秋法定节假日;

序员过中秋,那是一个热闹_原力计划_05

🌈 2.2 JAVA绘制月亮

提到中秋,我们会想到月亮,“花间一壶酒,独酌无相亲”,程序员的中秋该如何“独酌”呢?我相信大多数是与代码相伴的,下面用Java语言写一个“众星捧月”的程序。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Mid_autumn extends JFrame {
    public static void main(String[] args){
        JFrame jf =new JFrame();
     //背景
        jf.setTitle("中秋节");
        jf.setSize(1024,768);
        jf.setBackground(Color.BLACK);
        jf.setLocationRelativeTo(null);
    
        MyJPanel mj =new MyJPanel();
        jf.add(mj);

        jf.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e){
                System.exit(0);
            }
        });
        jf.setVisible(true);
    }
}
class MyJPanel extends JPanel{
    public void paint(Graphics g){
     //制作星星,随机生成
        g.setColor(Color.WHITE);
        for(int i=0;i<300;i++){
            g.drawString("*", (int)(Math.random()*1024), (int)(Math.random()*768));
        }
     //月亮制作,去掉黑色圆可为圆月
        g.setColor(Color.YELLOW);
        g.fillOval(200, 100, 100, 100);
        g.setColor(Color.BLACK);
        g.fillOval(230, 94, 100, 100);
     //文字描述
        g.setColor(Color.WHITE);
        g.setFont(new Font("楷体",Font.BOLD,30));
        g.drawString("中秋快乐!",700,90);
        g.drawString("阖家幸福!",700,130);
    }
}

🌈 2.3 Python画月饼

1、首先我们需要导入画图和数据计算的相关库

import numpy as np
from numpy import sin, cos
from matplotlib import pyplot as plt
from matplotlib.font_manager import FontProperties

2、为了在图片上显示中文,需要先加载Alibaba-PuHuiTi-Medium字体

wget http://tianchi-media.oss-cn-beijing.aliyuncs.com/DSW/Python/miniproject/01_draw_moon_cake/Alibaba-PuHuiTi-Medium.ttf

3、这里是核心方法,根据数学中内旋轮线(hypotrochoid)参数方程,利用lambd函数生成坐标点

x = lambda d,r,R,theta: (R-r)*np.cos(theta) + d*np.cos(((R-r)/r)*theta)
y = lambda d,r,R,theta: (R-r)*np.sin(theta) - d*np.sin(((R-r)/r)*theta)

4、接下来我们要画摆线,摆线是月饼边缘的花纹,首先添加相关参数,参数说明见注释: 这个参数是核心,理论上通过玄学调参可以生成无数种可能。可以尝试发挥。例如用for循环遍历 生成渐变动画~

# 转数-内圆旋转次数
revs = 30
# 迭代次数, 即沿绘制路径获取的点。
Niter = 9999
thetas = np.linspace(0,revs*2*np.pi,num=Niter)

d = 2  #  距离
r = 11 # 小圆半径
R = 12 # 大圆半径

5、生成摆线花纹, 可通过color和linewidth参数调整颜色和线宽。

plt.plot(x(d, r, R, thetas), y(d, r, R, thetas), color='orange', linewidth = '4')

序员过中秋,那是一个热闹_数据库_06


6、然后我们再画一个圆,这个圆是月饼的主体部分。

# 画个圆
length = 2.6
theta = np.linspace(0, 2 * np.pi, 100)
x = length * cos(theta)
y = length * sin(theta)
plt.plot(x, y, color='orange', linewidth = '5')
plt.axis('equal')

7.绘制文字,使用fontproperties参数可以使用上面下载的中文字体,因为代码不多,所以把剩余所有代码都写在这里

import numpy as np
from numpy import sin, cos
from matplotlib import pyplot as plt
from matplotlib.font_manager import FontProperties

x = lambda d,r,R,theta: (R-r)*np.cos(theta) + d*np.cos(((R-r)/r)*theta)
y = lambda d,r,R,theta: (R-r)*np.sin(theta) - d*np.sin(((R-r)/r)*theta)
# 转数-内圆旋转次数
revs = 30
# 迭代次数, 即沿绘制路径获取的点。
Niter = 9999
thetas = np.linspace(0,revs*2*np.pi,num=Niter)

d = 2  #  距离
r = 11 # 小圆半径
R = 12 # 大圆半径
plt.plot(x(d, r, R, thetas), y(d, r, R, thetas), color='orange', linewidth = '4')
length = 2.6
# 画个圆
theta = np.linspace(0, 2 * np.pi, 100)
x = length * cos(theta)
y = length * sin(theta)
plt.plot(x, y, color='orange', linewidth = '5')
plt.axis('equal')
plt.axis('off') # 隐藏坐标系
font_set = FontProperties(fname=r"Alibaba-PuHuiTi-Medium.ttf", size=12)
plt.text(-1.2, -1, '中秋\n快乐', bbox=dict(boxstyle='circle', fc="w", ec='orange', linewidth=4), fontproperties=font_set, fontsize=40, color='orange') ##ec为线条颜色,color为字体颜色,可以自由替换
plt.text(-3, -4, 'Python画月饼,Spaceack与您千里共禅娟', fontproperties=font_set, fontsize=20, color='#aa4a30')
plt.show()

序员过中秋,那是一个热闹_Python_07

🚀 3.中秋节祝福

序员过中秋,那是一个热闹_数据库_08

1、 月是中秋分外明,我把问候遥相寄;皓月当空洒清辉,中秋良宵念挚心;祝愿佳节多好运,月圆人圆事事圆!

2、 八月十五月儿圆,月圆人圆家团圆。愿你财源滚滚来,腰包鼓鼓圆又圆;愿你事业路上一帆顺,理想实现路不远;愿你爱情花开永不败,生活美满心愿圆。祝中秋快乐!

3、 一轮圆月寄相思,问候千里到身边。一块月饼圆又甜,心中祝愿藏里面。一杯美酒香又醇,愿你生活福无限。中秋节到了,祝你合家团圆,幸福安康!

4、 又是中秋佳节时,每逢佳节倍思亲。欢聚一堂有几人,千里相思思几分?多少温馨又重现,多少祝福挂心间。遥望皎洁明月里,但愿君能知我心。不尽的思念倾渲泄,借仙子广袖送友亲。中秋快乐!

5、 秋风秋雨,秋心秋情,一叶知秋,感悟满腔思念的情怀;月圆饼圆,人圆家圆,一桌团圆,分享满心团聚的快乐;亲爱的朋友,中国中秋到,愿身边所有人平安健康!

6、 海上生明月,天涯共此时。供桌庭院中,祭月共举杯。团圆喜笑颜,赏月食甜饼。月圆人也圆,酒香花儿艳。中秋节祝朋友,家圆人圆事事圆,甜甜蜜蜜幸福园。