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);
}
}
?