| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- package cn.com.lzt.common.util.calendar;
- import java.sql.Timestamp;
- import java.text.DateFormat;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- /*
- * 输出万年历
- * 设定1900.01.01为起点
- 1900~2900
- 项目中使用
- */
- public class PermanentCalendarInsert {
- static DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- // 执行插入年月日星期
- public static void main(String[] args) {
- int Year = 2016;
- for (int i = 0; i < 20; i++) {
- Year += 1;
- getMonth(Year);
- }
- }
- // 判断闰年
- static boolean LeapYear(int year) {
- if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) { // 是闰年
- return true;
- } else {
- return false;
- }
- }
- static final int N = 1900; // 用N表示起始年份
- // 获得每月日期
- public static void getDate(int Year, int Month) {
- int n = 1;// 1900年1月1日 是星期一
- int month[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; // 用来存储月份的天数
- int year[] = new int[1001]; // 用来存储每年1月1日是星期几
- year[0] = n;
- for (int i = 1; i < year.length; i++) {
- int days = 365;
- if (LeapYear(i + N - 1)) {// 如果它的前一年是闰年则需要加366
- days = 366;
- year[i] = (year[i - 1] + days) % 7;
- } else {
- year[i] = (year[i - 1] + days) % 7;
- }
- }
- // int Month =1,Year=2017;
- if (LeapYear(Year)) { // 如果是闰年,2月改为29号
- month[2] = 29;
- }
- System.out.print("Year:" + Year + ",Month:" + Month + ",[日期:星期],[");
- for (int i = 1; i <= month[Month]; i++) {
- int Week = getWeek(Year, Month, i) + 1;
- if (i != month[Month]) {
- System.out.print(i + ":" + Week + "],[");
- } else {
- System.out.print(i + ":" + Week + "]");
- }
- /*System.out.println("Year:" + Year);
- System.out.println("Month:" + Month);
- System.out.println("i:" + i);*/
- getUpdateNew(Year, Month, i, Week);
- }
- }
- // 计算输入日期是星期几
- // 采用了基姆拉尔森计算公式
- // W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7
- // 在公式中d表示日期中的日数,m表示月份数,y表示年数。
- // 注意:在公式中有个与其他公式不同的地方:
- // 把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。
- public static int getWeek(int year, int month, int day) {
- if (month < 3) {
- month += 12;
- year--;
- }
- return (day + 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year
- / 100 + year / 400) % 7;
- }
- // 循环月
- public static void getMonth(int Year) {
- int[] arrayMonth = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
- for (int j = 0; j < arrayMonth.length; j++) {
- getDate(Year, arrayMonth[j]);
- }
- }
- // sql插入
- public static int getUpdateNew(int year, int month, int day, int week) {
- String uuid = generate();
- Date date = new Date();
- Timestamp createDate = new Timestamp(date.getTime());
- String ymdStr = getYmdStr(year, month, day);
- String dtype = judgeDtype(week);
-
- String sql = "insert into t_bus_calendar (id,year,month,day,week,ymd_date,dtype,ifedit,create_name,create_by,create_date) values("
- + "'" + uuid + "',"
- + year + ","
- + "right(100" + month + ",2),"
- + day + ","
- + "'" + String.valueOf(week) + "',"
- + "DATE_FORMAT('" + ymdStr + "'" + ",'" + "%Y-%c-%d %h:%i:%s'" + ")" + ","
- + "'" + dtype + "',"
- + "'0'" + ","
- + "'管理员','admin','" + createDate + "')";
- return JdbcConnection.executeUpdate(sql, new Object[] {});
- }
- // UUID
- public static String generate() {
- return java.util.UUID.randomUUID().toString().replace("-", "");
- }
-
- public static String getYmdStr(int year, int month, int day){
- String monthStr = "";
- String dayStr = "";
- if(String.valueOf(month).length() == 1){
- monthStr = "0" + month;
- }else{
- monthStr = String.valueOf(month);
- }
- if(String.valueOf(day).length() == 1){
- dayStr = "0" + day;
- }else{
- dayStr = String.valueOf(day);
- }
- String ymdStr = year + "-" + monthStr + "-" + dayStr;
- return ymdStr;
- }
-
- public static Date getYmdDate(int year, int month, int day){
- String monthStr = "";
- String dayStr = "";
- if(String.valueOf(month).length() == 1){
- monthStr = "0" + month;
- }else{
- monthStr = String.valueOf(month);
- }
- if(String.valueOf(day).length() == 1){
- dayStr = "0" + day;
- }else{
- dayStr = String.valueOf(day);
- }
- String ymdStr = year + "-" + monthStr + "-" + dayStr;
- Date ymdDate = null;
- try {
- ymdDate = sdf.parse(ymdStr);
- return ymdDate;
- } catch (ParseException e) {
- e.printStackTrace();
- }
- return ymdDate;
- }
-
-
- public static String judgeDtype(int week){
- if(week==6 || week==7){
- return "1";
- }
- return "0";
- }
-
- }
|