`
阅读更多
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);
	}
}

 

分享到:
评论

相关推荐

    C++ 类与对象之日期类的创建代码解析

    正对于使用了C++的运算符重载和析构函数、构造函数以及日期类之间的相关计算,主要内容包含了:获取某年某月的天数,日期减去日期获得的日期差,日期的加减天数得到的日期,日期之间的大小比较。 主要使用的运算符...

    Java的日期时间处理类讲解代码( Date 、Calendar、SimpleDateFormat、LocalDateTime)

    本源码资源提供了Java中的日期时间处理类相关内容,包括日期、时间和时区的操作方法和示例。它涵盖了Java编程中常用的日期时间处理需求以及如何使用日期时间类来解决这些问题。 适用人群 本源码资源适用于具备一定...

    Java日期类案例及源代码.rar

    此资源为Java中日期类相关案例及源代码,可用于辅助教师进行相关内容的备课,也可方便学生对相关内容进行学习及巩固。

    Java开发基础日期类代码详解

    主要介绍了Java开发基础日期类的相关内容,代码通过日期工具类获取指定月份的星期与日期对应关系,以及获取指定月份的所有日期与星期集合等,具有一定参考价值,需要的朋友可以了解下。

    Java - DateUtil 日期时间转换工具类

    内容概要:日期时间转换工具类,包括基本的Date类型,String类型,TimeStamp类型,LocalDateTime类型,LocalDate类型之间的互相转换,还提供了许多与时间获取,时间计算有关的方法,如:获取指定日期几天后的日期;...

    PHP日期相关类.zip

    介绍一个PHP日期相关类,获取某年某月的开始结束日期,获取某年某周的开始结束日期,这是一个比较实用的类,需要的朋友们可以参考,如果大家有更好的此类的代码也可以上传与我们分享。

    DateUtil.Java 日期时间操作函数库代码.rar

    一个Java 日期时间操作函数集 DateUtil.java代码,用于时间和日期操作的工具类,DateUtil类包含了标准的时间和日期格式,以及这些格式在字符串及日期之间转换的方法,格式化后的系统当前时间,如果有异常产生,返回...

    国家统计局 - 2018年统计用区划代码和城乡划分代码(地址编码)

    此版本区划代码是调查截止日期为2018年10月31日的统计用区划代码。由于第四次全国经济普查清查工作于2018年8月开始,四经普的清查和登记工作中采用2018年6月15日的统计用区划代码。第四次全国经济普查数据处理使用...

    安卓开发框架工具类相关-很实用的安卓开发工具类开发必备日期处理工具类IO流转换工具类打印日志工具类屏幕字符串工具类Toast工具类弹框工具类.zip

    很实用的安卓开发工具类,开发必备,日期处理工具类,IO流转换工具类,打印日志工具类,屏幕,字符串工具类,Toast工具类,弹框工具类.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    java源程序 课件 常用类 抽象类与接口 图形用户界面 多线程反射 泛型 时间日期类 数组 异常处理 字符串类与正则表达

    java源程序 课件 常用类 抽象类与接口 图形用户界面 多线程反射 泛型 时间日期类 数组 异常处理 字符串类与正则表达等相关知识的ppt课件和源程序代码,是初学者的帮手,包含了Java所需的所有知识点。。。。

    通达信V6股票代码文件格式分析

    该文件格式主要用于存储股票代码相关数据,包括股票代码、股票名称、日期、时间、IP地址等信息。 文件头部信息 在通达信V6股票代码文件中,文件头部信息包括IP地址、日期、时间等信息。IP地址采用Char[40]类型,...

    c# 加密和解密相关代码

    MD5 类表示MD5 哈希算法的所有实现均从中继承的抽象类,该类位于System.Security.Cryptography 命名 空间下,其ComputeHash 方法有3种重载形式,分别介绍如下。 计算指定字节数组的哈希值,语法格式如下: public ...

    Java开发技术大全(500个源代码).

    代码范例列表 第1章 示例描述:本章演示如何开始使用JDK进行程序的开发。 HelloWorldApp.java 第一个用Java开发的应用程序。 firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载...

    C#公共类源代码 带帮助文档

    处理数据类型转换,数制转换、编码转换相关的类(ConvertHelper.cs) CRC校验辅助类(CRCUtils.cs) 枚举操作公共类(EnumHelper.cs) 身份证操作辅助类(IDCardHelper.cs) 检测字符编码的类(IdentifyEncoding.cs) ...

    史上最强JavaScript日历控件正式版(无偿的永久的提供给大家免费使用,含全部源代码)

    有时在项目中需要选择生日之类的日期,而默认点开始日期都是当前日期,导致年份选择非常麻烦,你可以通过起始日期功能加上配置alwaysUseStartDate属性轻松解决此类问题 自定义格式(注意大小写) yMdHmswW分别代表年月...

    .NET C# 常用知识点代码速查字典

    提供了 IDE IO ,WinForm,Web,和Xml 数据库操作, 网络操作 ,绘图,日期和字符串型数据操作 收集了各种常用的代码,可以用来学习,和修改代码为自己使用

    给定时间自动获取上月25号本月24号.doc

    7. 日期处理的工具类:在代码中,我们可以看到DateTimeHelper类的使用,这是一个日期处理的工具类。这种工具类可以帮助我们实现日期处理的封装和复用。 8. 日期处理的best practice:在代码中,我们可以看到日期...

    输入授权码登录 Delphi判断类源代码.rar

    一个Delphi 通用的授权登录示例程序,程序原理大致是这样的:声明变量day,hour分别用来存储字符串格式的日期数据和时间数据,声明变量day1,hour1分别用来存储字符串格式的日期的两位数据和小时的两位数据,系统当前...

    javascript代码常用大全

    一、验证类 1、数字验证内 1.1 整数 1.2 大于0的整数 (用于传来的ID的验证) 1.3 负整数的验证 ...相关类,如播放器,flash与脚本互动等 16, 刷新/模拟无刷新 异步调用类(XMLHttp或iframe,frame)

    java 获取上月、一个月最后一天、周一、周日、本月日期

    Java 日期处理详解 Java 获取上月、一个月最后一天、周一、周日、本月日期是 Java 日期处理中的一些常见操作。下面我们将详细介绍这些操作的实现方法。...这些操作可以帮助开发者更好地处理日期相关的业务逻辑。

Global site tag (gtag.js) - Google Analytics