当前位置: 代码迷 >> Web前端 >> 日期种的相关代码
  详细解决方案

日期种的相关代码

热度:514   发布时间:2012-06-26 10:04:13.0
日期类的相关代码
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);
	}
}

?

  相关解决方案