JAVA中日期类Date、日历类Calendar、DateFormat类

一、Date类

1、在JAVA API手册中Date类只有一个构造方法,其余的都已经过时了,原因是将其都抽象到了其他的类中。

      Date()——分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。

2、两个主要方法

①System.currentTimeMillis()——获取当前系统的时间戳

②setTime——设置时间

package com.brx.date;

import java.util.Date;

public class Bao1 {
	public static void main(String[] args) {
		// 如何忽的当前系统时间
		long currentTimeMillis = System.currentTimeMillis();
		System.out.println(currentTimeMillis);
		
		// 1970 1 1 0:0:0 星期一 计算机元年 格林尼治时间——设置为0
		Date d=new Date();
		d.setTime(0);
		System.out.println(d);//这里输出时间为1970 1 1 8:0:0,因为中国是东八区,早8点,所以元年为0:0:0 
	}
}
二、Calendar类

1、   根据时间戳  获得年月日时分秒,直接用代码说明

package com.brx.date;

import java.util.Calendar;
import java.util.Date;

public class Bao2 {
	public static void main(String[] args) {
		// 根据时间戳  获得年月日时分秒
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(new Date());   //设置为当前系统时间戳后,再获取年月日时分秒,
                                                //否则获取的知识计算机元年
           int year = calendar.get(Calendar.YEAR);
	    int month = calendar.get(Calendar.MONTH);
	    month=month+1;// 注:代码是老外写的,他们认为月份为0—11,所以要加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);
	    
	    System.out.println(year+"-"+month+"-"+day+" "+hour+":"+minute+":"+second);
	}
}
2、距离高考还有多少天

package com.brx.date;

import java.util.Calendar;
import java.util.Date;

public class Bao3 {
	public static void main(String[] args) {
		//计算距离高考还有多少天
		//第一种实现方法——使用时间戳计算
		{
			//注:日历类不能new对象,只能通过getInstance方法获取,说明它可能是个单例模式
			// 但是:通过获取两个对象并且输出知——识两个不同的对象,并不是单例模式
			Calendar current = Calendar.getInstance();
			Calendar next=Calendar.getInstance();
			current.setTime(new Date());
			
			next.set(Calendar.YEAR, (current.get(Calendar.YEAR))+1);
			next.set(Calendar.MONTH, 5);// 6月
			next.set(Calendar.DAY_OF_MONTH, 7);
			next.set(Calendar.HOUR_OF_DAY, 8);
			next.set(Calendar.MINUTE, 0);
			next.set(Calendar.SECOND, 0);
			print(current);
			print(next);
			System.out.println("距离高考的天数为:"+
			(next.getTime().getTime()-current.getTime().getTime())/(1000*60*60*24));
			//    2017-7-27 20:48:37
			//    2018-6-7 8:0:0
			//    距离高考的天数为:314
		}
		
		//第二种方法——使用add方法(根据日历的规则,为给定的日历字段添加或减去指定的时间量。)
		{
			Calendar current = Calendar.getInstance();
			//current.setTime(new Date());
			int year = current.get(Calendar.YEAR);
			//System.out.println(year);
			int i=0;
			while(true){
				current.add(Calendar.DAY_OF_MONTH, 1);
				if(current.get(Calendar.YEAR)-year==1){
					int month = current.get(Calendar.MONTH);
					int day = current.get(Calendar.DAY_OF_MONTH);
					if(month==6&&day==7){
						break;
					}
				}
				i++;
			}
			System.out.println("距离高考天数为:"+i);
		}
	}

	private static void print(Calendar calendar) {
	    int year = calendar.get(Calendar.YEAR);
	    int month = calendar.get(Calendar.MONTH);
	    month=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);
	    
	    System.out.println(year+"-"+month+"-"+day+" "+hour+":"+minute+":"+second);
	}
}
3、两个修改时间量的方法

add(int field, int amount) ——(有进位)给指定的字段添加,减去时间量。这个会导致前面的字段增加或者减少(比如说日会导致月增加或者减少,月会导致年增加或者减少)
roll(int filed,int amount);给指定的字段添加,减去时间量,只会在自己的字段内转圈


三、DateFormat类

1、其子类为SimpleDateFormat

2、有两个方法

①parse——将字符串转换为日期

②format—将时间按照特定的格式转换为字符串

package com.brx.date;

import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class Bao4 {
	public static void main(String[] args) throws ParseException {
		//String date="2008-05-05 10:10:10";
		SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   		String format = s.format(new Date());
		System.out.println(format);
		
		String date="2008-05-05 10:10:10";
		Date parse = s.parse(date);
		System.out.println(parse.getTime());
	}
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值