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

 

分享到:
评论

相关推荐

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

    这个资源包“Java日期类案例及源代码.rar”包含了两个子文件:日期类2和日期类,很可能是两个不同的示例项目或者案例研究,旨在帮助教师在教学中深入讲解Java日期类的用法,并辅助学生理解和实践相关知识。...

    Java日期选择控件完整源代码

    这篇文档将详细解析"Java日期选择控件完整源代码"的相关知识点,帮助开发者更好地理解和应用这些源码。 首先,我们要知道Java中的日期处理主要依赖于`java.util.Date`类和`java.time`包(自Java 8引入)。在这个源...

    日期控件代码

    "cal"可能是压缩包内的文件名,这可能是一个日历相关的类、库或者资源文件。它可能包含了实现日期选择逻辑、展示日历视图的核心代码或数据结构。 总的来说,"日期控件代码"的开发涉及多个技术层面,从用户界面设计...

    日期选择JS源代码网络资源

    根据"日期选择js"这个文件名,我们可以推测这个资源可能包含了实现上述功能的源代码,可能是一个独立的JS文件,包含了用于创建和管理日期选择器的函数和类。如果这个文件包含详细的注释和文档,那么它将是一个学习和...

    js calendar橙色日期选择器代码.zip

    7. **模块化与封装**:为了保持代码的整洁和可维护性,可以将日期选择器的逻辑封装成一个独立的函数或类,这样可以方便地在多个地方复用。 8. **跨浏览器兼容性**:由于JavaScript的实现存在差异,日期选择器可能...

    .NET日期控件代码

    在.NET框架中,日期控件是开发者经常使用的组件,用于在用户界面中显示、选择或输入日期。这些控件在Windows Forms、ASP.NET Web Forms、WPF(Windows ...通过不断实践和学习,你可以更高效地处理日期相关的任务。

    delphi日期源代码

    3. 创建自定义日期类:为了满足特定需求,开发者有时会创建自定义的日期类,扩展TDateTime的功能,例如添加额外的属性或方法,处理闰年、时区转换等问题。 在朱建强的源代码实例中,“死亡日期”可能指的是对特定...

    实用类的代码

    标题"实用类的代码"可能是指一系列这样的类,它们提供了一些常用的操作或者工具方法,例如字符串处理、日期时间操作、数学计算等。这些类通常会被封装到一个库或框架中,方便开发者在项目中调用。 描述中的“实用类...

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

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

    Java日期工具类,学习代码

    Java日期工具类是Java开发中不可或缺的一部分,它们用于处理日期和时间相关的操作。在Java中,日期和时间处理涉及到多个类和接口,如`java.util.Date`、`java.util.Calendar`、`java.text.SimpleDateFormat`以及Java...

    java 工具类代码集合

    Java工具类代码集合是Java开发中非常重要的组成部分,它们提供了许多通用的功能,使得开发者能够更加高效地编写代码,避免重复劳动。在这个集合中,我们通常会看到各种实用的方法,涵盖字符串处理、数组操作、日期...

    日期类数据处理程序实现日期加减

    在C++编程中,日期类数据处理是一种常见的需求,特别是在日志记录、财务计算或时间相关的算法中。本文将深入探讨如何实现一个日期类,包括日期的加法和减法操作。首先,我们需要理解日期的基本构成,即年、月、日。...

    Java常用日期辅助类

    `java.util.Date`是Java早期版本中的日期类,它可以表示从1970年1月1日(UTC)到现在的毫秒数。然而,这个类有一些设计上的缺陷,比如不支持时区和不可变性。因此,`java.time`包在Java 8中被引入,提供了更加强大和...

    农历阳历日期节日JS代码.zip

    在实际使用时,开发者可以将这段JS代码嵌入到HTML页面中,通过调用相关的函数,就可以在网页上动态显示农历日期和节日,提升用户体验,特别是在构建具有中国特色的网站或者应用时,这一功能显得尤为重要。...

    js日期时间选择器代码.zip

    "CSS特效"暗示了代码中可能包含了一些CSS3技术,如过渡、动画或者伪类,以实现动态效果和视觉吸引力。"网页特效"进一步确认了这个选择器是为Web页面设计的,用于增强用户与日期时间输入字段的交互体验。 【压缩包子...

    java 日期帮助类

    Java 日期帮助类是编程中不可或缺的部分,尤其是在处理时间日期相关的业务逻辑时。在这个Java 日期帮助类中,包含了多达50个实用方法,涵盖了日期和时间的各种操作,旨在简化开发人员的工作,提高代码的可读性和可...

    查询日期源代码

    6. `DateTimeOffset` 类:除了`DateTime`,C#还提供了`DateTimeOffset`,它包含了一个`DateTime`和一个时区偏移量,适合处理时区相关的日期和时间。 7. 构建日期查询条件:在数据库操作中,我们经常需要构建基于...

    C#常用类11个相关代码源码

    4. **System.DateTime**: 表示日期和时间的类。它提供了多种方法来操作日期,如`DateTime.Now`获取当前时间,`DateTime.AddDays()`增加或减少日期。 5. **System.Collections.Generic.List**: 这是一个动态大小的...

    js关于日期联动的代码

    在JavaScript编程中,日期联动通常指的是在用户选择一个日期时,其他与日期相关的元素(如时间、日历等)会自动更新或触发某些操作。这种功能常见于许多Web应用程序,如在线预订系统、日程安排工具等。在这个场景中...

Global site tag (gtag.js) - Google Analytics