`
nanjingjiangbiao_T
  • 浏览: 2594373 次
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Java Date 和 Calendar 实例

 
阅读更多

Java 之 Date 和 Calendar 实例

package com.homer.learn;

import java.text.DateFormat;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;


public class TimeTest {
	public static void main(String[] args) {
		TimeTest tt = new TimeTest();

		System.out.println("\n当前日期: ");
		System.out.println(tt.getNowTime());					// 获取当前时间
		System.out.println(tt.getNowTime2());					// 获取当前时间
		System.out.println(tt.getNowTime3());					// 获取当前时间
		
		System.out.println("\n计算周: ");
		System.out.println(tt.getDaysOfNow2SundayInWeek());		// 获取当前日期与本周日的相差天数
		System.out.println(tt.getDateOfMondayInWeek());			// 获取本周一的日期
		System.out.println(tt.getDateOfSaturdayInWeek());		// 获取本周六的日期
		System.out.println(tt.getDateOfSaturdayInNextWeek());	// 获取下周一的日期
		System.out.println(tt.getDateOfSaturdayInLastWeek());	// 获取上周一的日期


		System.out.println("\n计算月: ");
		System.out.println(tt.getFirstDayOfMonth());			// 获取当月的第一天
		System.out.println(tt.getLastDayOfMonth());				// 获取当月最后一天
		System.out.println(tt.getFirstDayOfPreviousMonth());	// 获取上月第一天		
		System.out.println(tt.getLastDayOfPreviousMonth());		// 获取上月最后一天			
		System.out.println(tt.getFirstDayOfNextMonth());		// 获取下月第一天	
		System.out.println(tt.getLastDayOfNextMonth());			// 获取下月最后一天
		

		System.out.println("\n计算年: ");
		System.out.println(tt.getFirstDayOfYear());				// 获取本年的第一天
		System.out.println(tt.getLastDayOfYear());				// 获取本年最后一天
		System.out.println(tt.getFirstDayOfPreviousYear());		// 获取上年的第一天
		System.out.println(tt.getLastDayOfPreviousYear());		// 获取上年最后一天
		System.out.println(tt.getFirstDayOfNextYear());			// 获取下年的第一天
		System.out.println(tt.getLastDayOfNextYear());			// 获取下年最后一天
		System.out.println(tt.getDaysOfYear());					// 获取本年的天数
		

		System.out.println("\n计算季度: ");
		System.out.println(tt.getSeasonOfMonth());			 	// 获取当前月的季度
		System.out.println(tt.getLastDayOfNow());				// 获取当前天所在月份的天数
		System.out.println(tt.isLeapYear(2012));			 	// 判断是否是润年
		

		System.out.println("\n日期格式转换与计算: ");
		System.out.println(tt.getDateFromStr("2012-06-20"));	// 将字符串时间格式 yyyy-MM-dd,转换成Date类型
		System.out.println(tt.getWeek("2012-06-20"));			// 根据一个日期,返回是星期几的字符串
		System.out.print("2012-06-02 -> 2012-06-12间隔天数:");	// 计算两个日期间的间隔天数
		System.out.println(tt.getDaysFromTwoDate("2012-06-02", "2012-06-12"));			
	}

	
	
	// 获取当前时间
	public String getNowTime() {
		SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		
		Date now = new Date();
		return sDateFormat.format(now);
	}

	public String getNowTime2() {
		SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		
		Date now = new Date(System.currentTimeMillis());
		return sDateFormat.format(now);
	}

	public String getNowTime3() {
		StringBuilder strBuildNow = new StringBuilder();
		
		Calendar calendar = Calendar.getInstance();
		int year = calendar.get(Calendar.YEAR);
		int month = calendar.get(Calendar.MONTH) + 1;
		int day = calendar.get(Calendar.DAY_OF_MONTH);
		int hour = calendar.get(Calendar.HOUR_OF_DAY);
		int minute = calendar.get(Calendar.MINUTE);
		int second = calendar.get(Calendar.SECOND);
		int millissecond = calendar.get(Calendar.MILLISECOND);
		
		strBuildNow.append(year + "-");
		strBuildNow.append(month + "-");
		strBuildNow.append(day + " ");
		strBuildNow.append(hour + ":");
		strBuildNow.append(minute + ":");
		strBuildNow.append(second + ".");
		strBuildNow.append(millissecond);
		
		return strBuildNow.toString();
	}
	
	
	
	
	// 获取当前日期与本周日的相差天数
	public int getDaysOfNow2SundayInWeek() {
		Calendar calendar = Calendar.getInstance();
		
		int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;		// 减一天,周一为1,符合中国人习惯。Sunday - 1; Monday - 2; Saturday - 7
		if(dayOfWeek == 0) {		// 周日
			return 0;
		} else {
			return 0 - dayOfWeek;
		}
	}
	
	// 获取本周一的日期
	public String getDateOfMondayInWeek(){
		int day = this.getDaysOfNow2SundayInWeek() + 1;	// 加1,即周一离本周日的间隔天数
		GregorianCalendar gCalendar = new GregorianCalendar();
		
		gCalendar.add(GregorianCalendar.DATE, day);		// 计算与本周一相差的时间间隔
		Date curDay = gCalendar.getTime();
		
		DateFormat dateFormat = DateFormat.getInstance();
		String dateOfMonday = dateFormat.format(curDay);
		
		return dateOfMonday;
	}

	// 获取本周六的日期
	public String getDateOfSaturdayInWeek(){
		int day = this.getDaysOfNow2SundayInWeek() + 6;	// 加6,即周六离本周日的间隔天数
		GregorianCalendar gCalendar = new GregorianCalendar();
		
		gCalendar.add(GregorianCalendar.DATE, day);		// 计算与本周六相差的时间间隔
		Date curDay = gCalendar.getTime();
		
		DateFormat dateFormat = DateFormat.getInstance();
		String dateOfMonday = dateFormat.format(curDay);
		
		return dateOfMonday;
	}

	// 获取上周一的日期
	public String getDateOfSaturdayInLastWeek(){
		int day = this.getDaysOfNow2SundayInWeek() - 1;	// 减1,即上周一离本周日的间隔天数
		GregorianCalendar gCalendar = new GregorianCalendar();
		
		gCalendar.add(GregorianCalendar.DATE, day);		// 计算与上周一相差的时间间隔
		Date curDay = gCalendar.getTime();
		
		DateFormat dateFormat = DateFormat.getInstance();
		String dateOfMonday = dateFormat.format(curDay);
		
		return dateOfMonday;
	}
	
	// 获取下周一的日期
	public String getDateOfSaturdayInNextWeek(){
		int day = this.getDaysOfNow2SundayInWeek() + 8;	// 加8,即下周一离本周日的间隔天数
		GregorianCalendar gCalendar = new GregorianCalendar();
		
		gCalendar.add(GregorianCalendar.DATE, day);		// 计算与下周一相差的时间间隔
		Date curDay = gCalendar.getTime();
		
		DateFormat dateFormat = DateFormat.getInstance();
		String dateOfMonday = dateFormat.format(curDay);
		
		return dateOfMonday;
	}
	
	
	

	// 获取当月第一天
	public String getFirstDayOfMonth() {
		String strFirstDay = "";
		SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.DATE, 1);		// 设置当前月的1号
		
		strFirstDay = sDateFormat.format(calendar.getTime());
		return strFirstDay;
	}

	// 获取当月最后一天
	public String getLastDayOfMonth() {
		String strLastDay = "";
		SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.DATE, 1);		// 设置当前月的1号
		calendar.add(Calendar.MONDAY, 1);	// 加一个月,变为下月的1号
		calendar.add(Calendar.DATE, -1);	// 减去一天,变为当前月的最后一天
		
		strLastDay = sDateFormat.format(calendar.getTime());
		return strLastDay;
	}

	// 获取上月第一天
	public String getFirstDayOfPreviousMonth() {
		String strFirstDay = "";
		SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.DATE, 1);		// 设置当前月的1号
		calendar.add(Calendar.MONDAY, -1);	// 减一个月,变为上月的1号
		
		strFirstDay = sDateFormat.format(calendar.getTime());
		return strFirstDay;
	}

	// 获取上月最后一天
	public String getLastDayOfPreviousMonth() {
		String strLastDay = "";
		SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.DATE, 1);		// 设置当前月的1号
		calendar.add(Calendar.DATE, -1);	// 减一天,变为上月的1号
		
		strLastDay = sDateFormat.format(calendar.getTime());
		return strLastDay;
	}

	public String getLastDayOfPreviousMonth2() {
		String strLastDay = "";
		SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		
		Calendar calendar = Calendar.getInstance();
		calendar.add(Calendar.MONDAY, -1);	// 减一个月
		calendar.set(Calendar.DATE, 1);		// 设置当前月的1号
		calendar.roll(Calendar.DATE, -1);	// 把日期回滚一天,也就是本月最后一天
		
		strLastDay = sDateFormat.format(calendar.getTime());
		return strLastDay;
	}
	
	// 获取下月第一天
	public String getFirstDayOfNextMonth() {
		String strFirstDay = "";
		SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		
		Calendar calendar = Calendar.getInstance();
		calendar.add(Calendar.MONTH, 1);	// 加一个月
		calendar.set(Calendar.DATE, 1);		// 设置当前月第一天
		
		strFirstDay = sDateFormat.format(calendar.getTime());
		return strFirstDay;
	}

	// 获取下月最后一天
	public String getLastDayOfNextMonth() {
		String strLastDay = "";
		SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.DATE, 1);		// 设置当前月的1号
		calendar.add(Calendar.MONDAY, 2);	// 加两个月,变为下下月的1号
		calendar.add(Calendar.DATE, -1);	// 减一天,变为下月的最后一天
		
		strLastDay = sDateFormat.format(calendar.getTime());
		return strLastDay;
	}

	public String getLastDayOfNextMonth2(){
		String strLastDay = "";
		SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		
		Calendar calendar = Calendar.getInstance();
		calendar.add(Calendar.MONTH, 1);	// 加1个月
		calendar.set(Calendar.DATE, 1);		// 把日期设置为当月第1天
		calendar.roll(Calendar.DATE, -1);	// 日期回滚1天,也就是本月最后1天
		
		strLastDay = sDateFormat.format(calendar.getTime());
		return strLastDay;
	}
	
	
	
	
	// 获取本年的第一天
	public String getFirstDayOfYear(){
		String strFirstDay = "";
		SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.DAY_OF_YEAR, 1);		// 设置当年第一天
		
		strFirstDay = sDateFormat.format(calendar.getTime());
		return strFirstDay;
	}

	// 获取本年的最后一天
	public String getLastDayOfYear(){
		String strLastDay = "";
		
		Calendar calendar = Calendar.getInstance();
		strLastDay = calendar.get(Calendar.YEAR) + "-12-31";
		
		return strLastDay;
	}
	
	// 获取上年的第一天
	public String getFirstDayOfPreviousYear(){
		String strFirstDay = "";
		
		Calendar calendar = Calendar.getInstance();
		strFirstDay = (calendar.get(Calendar.YEAR) - 1) + "-01-01";
		
		return strFirstDay;
	}

	// 获取上年的最后一天
	public String getLastDayOfPreviousYear(){
		String strLastDay = "";
		
		Calendar calendar = Calendar.getInstance();
		strLastDay = (calendar.get(Calendar.YEAR) - 1) + "-12-31";
		
		return strLastDay;
	}
	
	// 获取下年的第一天
	public String getFirstDayOfNextYear(){
		String strFirstDay = "";
		SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		
		Calendar calendar = Calendar.getInstance();
		calendar.add(Calendar.YEAR, 1);				// 加一年
		calendar.set(Calendar.DAY_OF_YEAR, 1);		// 设置当年第一天
		
		strFirstDay = sDateFormat.format(calendar.getTime());
		return strFirstDay;
	}

	// 获取下年的最后一天
	public String getLastDayOfNextYear(){
		String strLastDay = "";
		SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		
		Calendar calendar = Calendar.getInstance();
		calendar.add(Calendar.YEAR, 1);				// 加一年
		calendar.set(Calendar.DAY_OF_YEAR, 1);		// 设置当年第一天
		calendar.roll(Calendar.DAY_OF_YEAR, -1);	// 回滚到当年最后一天
		
		strLastDay = sDateFormat.format(calendar.getTime());
		return strLastDay;
	}
	
	// 获取本年的天数
	public String getDaysOfYear(){
		int year = 0;
		int days = 0;
		
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.DAY_OF_YEAR, 1);		// 设置日期为当年第一天
		calendar.roll(Calendar.DAY_OF_YEAR, -1);	// 把日期回滚一天
		
		year = calendar.get(Calendar.YEAR);
		days = calendar.get(Calendar.DAY_OF_YEAR);
		
		return (days + " in " + year);
	}
	
	
	
	
	// 获取当前月的季度
	public String getSeasonOfMonth(){
		String strSeason = "";
		int year, month, day;
		int season = 1;
		int array[][] = new int[][]{ {1,2,3}, {4,5,6}, {7,8,9}, {10,11,12} };
		
		Calendar calendar = Calendar.getInstance();
		year = calendar.get(Calendar.YEAR);
		month = calendar.get(Calendar.MONDAY) + 1;
		day = calendar.get(Calendar.DAY_OF_MONTH);
		switch (month) {
		case 1:
		case 2:
		case 3:
			season = 1;
			break;
		case 4:
		case 5:
		case 6:
			season = 2;
			break;
		case 7:
		case 8:
		case 9:
			season = 3;
			break;
		case 10:
		case 11:
		case 12:
			season = 4;
			break;
		default:
			season = 1;
			break;
		}
		
		
		int start_month = array[season-1][0];
		int end_month = array[season-1][2];
		strSeason = year + "-" + month + "-" +day;
		strSeason += " in [ " + year + "-" + start_month + " : " + year + "-" + end_month + " ]";
		
		return strSeason;
	}
	
	
	// 获取当前天所在月份的天数
	public String getLastDayOfNow(){
		String strLastDay = "";
		int year, month, day;
		int days = 0;
		
		Calendar calendar = Calendar.getInstance();
		year = calendar.get(Calendar.YEAR);
		month = calendar.get(Calendar.MONTH) + 1;
		day = calendar.get(Calendar.DAY_OF_MONTH);
		
		switch (month) {
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
			days = 31;
			break;
		case 4:
		case 6:
		case 9:
		case 11:
			days = 30;
			break;
		case 2:
			if (isLeapYear(year)) {
				days = 29;
			} else {
				days = 28;
			}
			break;
		default:
			days = 0;
			break;
		}
		
		strLastDay = days + " in [ " + year + "-" + month + "-" + day + " ]";
		return strLastDay;
	}
	
	// 判断是否是润年
	public boolean isLeapYear(int year){
		return (year%4 == 0 && year%100 != 0) || (year%400 == 0);
	}
	
	
	
	

	// 将字符串时间格式 yyyy-MM-dd,转换成Date类型
	public Date getDateFromStr(String txtDate) {
		SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		ParsePosition pos = new ParsePosition(0);
		Date date = sDateFormat.parse(txtDate, pos);
		
		return date;
	}

	// 根据一个日期,返回是星期几的字符串
	public String getWeek(String txtDate) {
		Date date = getDateFromStr(txtDate);
		Calendar calendar = Calendar.getInstance();
		
		calendar.setTime(date);
		String week = new SimpleDateFormat("EEEE").format(date);
		
		return week;
	}

	// 计算两个日期间的间隔天数
	public long getDaysFromTwoDate(String txtDate1, String txtDate2) {
		if(txtDate1 == null || txtDate1.equals("")) {
			return 0;
		}
		if(txtDate2 == null || txtDate2.equals("")) {
			return 0;
		}
		
		SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		long days = 0;
		try {
			Date date1 = sDateFormat.parse(txtDate1);
			Date date2 = sDateFormat.parse(txtDate2);
			days = (date2.getTime() - date1.getTime())/(24*60*60*1000);		// 通过getTime()方法,把时间Date转换成毫秒格式Long类型,进行计算
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
		
		return days;
	}
	
}

运行结果:

当前日期:
2012-03-07
2012-03-07 12:30:11
2012-3-7 12:30:11.101

计算周:
-3
3/5/12 12:30 PM
3/10/12 12:30 PM
3/12/12 12:30 PM
3/3/12 12:30 PM

计算月:
2012-03-01
2012-03-31
2012-02-01
2012-02-29
2012-04-01
2012-04-30

计算年:
2012-01-01
2012-12-31
2011-01-01
2011-12-31
2013-01-01
2013-12-31
366 in 2012

计算季度:
2012-3-7 in [ 2012-1 : 2012-3 ]
31 in [ 2012-3-7 ]
true

日期格式转换与计算:
Wed Jun 20 00:00:00 CST 2012
Wednesday
2012-06-02 -> 2012-06-12间隔天数:10


源码下载


参考推荐:

Java 之 Date 和 Calendar



分享到:
评论

相关推荐

    Java 之 Date 和 Calendar 实例

    Java 之 Date 和 Calendar 实例

    Java Date类常用示例_动力节点Java学院整理

    在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理。这里简单介绍一下Date类的使用。

    JavaSE基础篇 -- System,Math,Date,CalendarAPI实例

    本压缩包详尽列举了JavaAPI当中的System、Runtime、Math、Date、Calendar类的实例,特别是日期格式与字符串格式的各种灵活转换。更多内容请参见:http://blog.csdn.net/zhongkelee

    Java Date Time教程-java.util.Date

    Java的java.util.Date类是Java初的时间类之一。该类的大部分方法已不推荐使用,取而代之的...  你可以通过getTime()方法访问java.util.Date实例的日期和时间,比如像这样:  java.util.Date date = new java.util.D

    Java 中 Date 与 Calendar 之间的编辑与转换实例详解

    主要介绍了Java 中 Date 与 Calendar 之间的编辑与转换 ,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

    Java中Date类和Calendar类的常用实例小结

    主要介绍了Java中Date类和Calendar类的常用实例小结,是Java入门学习中的基础知识的运用,需要的朋友可以参考下

    java上传文件实例

    <%@page import="java.io.File,java.util.Date;"%> String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> ...

    java范例开发大全

    11.3 Date类和Calendar类 324 实例191 使用Date类获取系统的当前时间 324 实例192 使用DateFormat类获取系统的当前时间 325 实例193 使用GregorianCalendar类获取系统的当前时间 326 实例194 使用SimpleDateFormat类...

    java范例开发大全源代码

     11.3 Date类和Calendar类 324  实例191 使用Date类获取系统的当前时间 324  实例192 使用DateFormat类获取系统的当前时间 325  实例193 使用GregorianCalendar类获取系统的当前时间 326  实例194 使用...

    Java BigInteger类,BigDecimal类,Date类,DateFormat类及Calendar类用法示例

    主要介绍了Java BigInteger类,BigDecimal类,Date类,DateFormat类及Calendar类用法,结合实例形式详细分析了Java使用BigInteger类,BigDecimal类,Date类,DateFormat类及Calendar类进行数值运算与日期运算相关操作...

    Java范例开发大全 (源程序)

     11.3 Date类和Calendar类 324  实例191 使用Date类获取系统的当前时间 324  实例192 使用DateFormat类获取系统的当前时间 325  实例193 使用GregorianCalendar类获取系统的当前时间 326  实例194 使用...

    Java范例开发大全(全书源程序)

    11.3 Date类和Calendar类 324 实例191 使用Date类获取系统的当前时间 324 实例192 使用DateFormat类获取系统的当前时间 325 实例193 使用GregorianCalendar类获取系统的当前时间 326 实例194 使用...

    Python Datetime模块和Calendar模块用法实例分析

    本文实例讲述了Python Datetime模块和Calendar模块用法。分享给大家供大家参考,具体如下: datetime模块 1.1 概述 datetime比time高级了不少,可以理解为datetime基于time进行了封装,提供了更多的实用的函数,...

    java范例开发大全(pdf&源码)

    11.3 Date类和Calendar类 324 实例191 使用Date类获取系统的当前时间 324 实例192 使用DateFormat类获取系统的当前时间 325 实例193 使用GregorianCalendar类获取系统的当前时间 326 实例194 使用SimpleDateFormat类...

    手机话费计费系统Java

    三,就是Java类库里面的date和Calendar的使用和相互转换(还要考虑实际日期的情况,比如闰年,平年,2月份,30/31日的月,月末与月初的交接,还有时间格式SimpleDateFormat 以及异常处理),这些问题相信很多同学都...

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

    GcdAndGcm.java 求最大公约数和最小公倍数 errorInit.java 演示变量初始化错误的程序 integerExample.java 演示各种整型变量的使用 isPrime.java 判断素数 leapYearByIf.java 用if语句判断闰年 ...

    java时间处理工具类--DateUtils

    if (mon >= Calendar.OCTOBER && mon <= Calendar.DECEMBER) { cal.set(Calendar.MONTH, Calendar.OCTOBER); cal.set(Calendar.DAY_OF_MONTH, 1); } return cal.getTime(); } public Date ...

    java常用类库

    java常用类库 主要方法分析 pdf 文件 实例讲解 StringBuffer类 Runtime类 Locable类 ResourceBundle类 System类 Date类 Calendar类 DateFormat类 Math类

    Java开发详解.zip

    031105_【第11章:Java常用类库】_日期操作类(Date、Calendar)笔记.pdf 031106_【第11章:Java常用类库】_日期操作类(DateFormat、SimpleDateFormat)笔记.pdf 031107_〖第11章:Java常用类库〗_实例操作:取得...

    Java2实用教程.rar

    4 4 1实例变量和类变量的区别 4 4 2实例方法和类方法的区别 4 5this关键字 4 6包 4 6 1包语句 4 6 2import语句 4 6 3将类打包 4 7访问权限 4 7 1私有变量和私有方法 4 7 2共有变量和共有方法 4 7 3友好变量和友好...

Global site tag (gtag.js) - Google Analytics