日期类的相关代码
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 stubint 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 blocke.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);}}
?