package com.csair.date; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; /** * 日期的一些基础方法 * @author Administrator * @data Mar 16, 2012 */ public class DateUtils { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int z = intfixDay(2012,02,25); System.out.println(z); } /** * 判断是否是闰(run)年 * 判断闰年方法. * 1.能被4整除,且不能被100整除 * 2.能被100整除,且能被400整除 * 满足其中一个条件便是闰年 * @param year * @return */ public static boolean isLeap(int year){ boolean b = false; if((year % 4 == 0 && year % 100 != 0) || (year % 100 == 0 && year % 400 == 0)){ b = true; } return b; } /** * 计算出某年某月某日是星期几 * (年+年/4+年/400-年/100-年基数+月基数+日)/7=……余星期几 * 年基数,平年1,闰年2 * 月基数,1、平年:一月0, 二月3, 三月3, 四月6, 五月1, 六月4,七月0, 八月3, 九月5, 十月0, 十一月3, 十二月5 * 月基数,2、闰年:一月0, 二月3, 三月4, 四月0, 五月2, 六月5,七月0, 八月3, 九月6, 十月1, 十一月4, 十二月6 * @param year * @param month * @return */ public static int intfixDay(int year, int month,int day){ int z = 0; int njs = isLeap(year)==true?2:1;//年基数 int yjs = getYJS(njs,month); z =( year + year / 4 + year / 100 - njs + yjs + day ) % 7; return z; } /** * 获得月基数 * @param njs * @param month * @return */ public static int getYJS(int njs,int month){ int n = 0 ; //平年的时候,每个月对应的值 if(njs == 1){ switch (month) { case 1: n = 0; break; case 2: n = 3; break; case 3: n = 3; break; case 4: n = 6; break; case 5: n = 1; break; case 6: n = 4; break; case 7: n = 0; break; case 8: n = 3; break; case 9: n = 5; break; case 10: n = 0; break; case 11: n = 3; break; case 12: n = 5; break; default: break; } }else if(njs == 2){ //闰年的时候,每个月对应的值 switch (month) { case 1: n = 0; break; case 2: n = 3; break; case 3: n = 4; break; case 4: n = 0; break; case 5: n = 2; break; case 6: n = 5; break; case 7: n = 0; break; case 8: n = 3; break; case 9: n = 6; break; case 10: n = 1; break; case 11: n = 4; break; case 12: n = 6; break; default: break; } } return n; } /** * 获取一个月有多少天 * @param year * @param month * @return */ public static int accountDays(int year,int month) { switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; case 2: if(isLeap(year)) return 29; else return 28; default: return 30; } } /** * 获取当前的时间,返回的是字符串类型 * @return */ public static String GetNewDate() { Date d = new Date(); String sdfString = "yyyy-MM-dd HH:mm:ss"; SimpleDateFormat sdFormat = new SimpleDateFormat(sdfString); TimeZone timeZone = TimeZone.getTimeZone("GMT+8");//时区 sdFormat.setTimeZone(timeZone); String dateString = sdFormat.format(d); return dateString; } /** * 获取当前时间,返回的是Date类型 * @return */ public static Date getCurrentDate(){ String dateString = GetNewDate(); return getDate(dateString); } /** * 字符串转换成date类型 * @param string * @return */ public static Date getDate(String string){ Date date = null; String sdfString = "yyyy-MM-dd HH:mm:ss"; SimpleDateFormat sDateFormat = new SimpleDateFormat(sdfString); try { date = sDateFormat.parse(string); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } return date; } /** * 生成指定位数的随机数 * @param Nub * @return */ public static String getRandomNub(int Nub) { String num = ""; for (int i = 0; i < Nub; i++) { num += String.valueOf((int) (10 * Math.random())); } return num; } /** * 比较指定时间与当前时间相差多少分钟 * @param time * @return */ public static long compareTime(Date time){ return (getCurrentDate().getTime()-time.getTime())/(1000*60); } }
?