java之各种各样的时间类Date、SimpleDateFormat、Calendar,使用方法,注意事项等

Date时间类

java.util.包下

时间原点概念

所有的数据类型,无论是整数,布尔,浮点数还是字符串,最后都需要以数字的形式表现出来。

日期类型也不例外,换句话说,一个日期,比如2020年10月1日,在计算机里,会用一个数字来代替。

那么最特殊的一个数字,就是零. 零这个数字,就代表Java中的时间原点,其对应的日期是1970年1月1日 8点0分0秒 。 (为什么是8点,因为中国的太平洋时区是UTC-8,刚好和格林威治时间差8个小时)

为什么对应1970年呢? 因为1969年发布了第一个 UNIX 版本:AT&T,综合考虑,当时就把1970年当做了时间原点。

所有的日期,都是以为这个0点为基准,每过一毫秒,就+1


import java.util.Date;

public class Demo04 {

	public static void main(String[] args) {
		
		Date date1 = new Date();
		System.out.println("打印当前时间使用默认格式:"+date1);
		
		Date date2 = new Date(60000);//表示原始时间加上指定时间单位是毫秒。
        System.out.println("从1970年1月1日 早上8点0分0秒 开始经历了1分的时间");
        System.out.println(date2);
	
	
        
        System.out.println("输出获取到当前的时间\t\t"+date1.getTime());
	
//        System.out.println(date1.getYear());
//        System.out.println(date1.getDate());
//        System.out.println(date1.getDay());
//        System.out.println(date1.getMonth());
        //当前日期的毫秒数
        System.out.println("Date.getTime() \t\t\t返回值: "+date1.getTime());
        
        
        //通过System.currentTimeMillis()获取当前日期的毫秒数
        System.out.println("System.currentTimeMillis() \t返回值: "+System.currentTimeMillis());
	
	
	
	}

}

SimpleDateFormat日期格式化类

java.text.包下

演示日期与字符串互转

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

public class Demo05 {

	public static void main(String[] args) throws ParseException {
		//SimpleDateFormat
		System.out.println("—————————————————日期转字符串—————————————————————————");
		
		Date date1=new Date();
		SimpleDateFormat  sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
		
		String str =sdf.format(date1);//格式化默认时间格式
		System.out.println("输出格式化签的时间为:"+date1);
		System.out.println("输出格式化后的时间为:"+str);
		 //y 代表年
        //M 代表月
        //d 代表日
        //H 代表24进制的小时
        //h 代表12进制的小时
        //m 代表分钟
        //s 代表秒
		//S 代表毫秒
		
		System.out.println("—————————————————字符串转日期—————————————————————————");
		
		SimpleDateFormat  sdf1 =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
		String  str1 ="1996-06-23 06:06:06 006";
		
		Date date2 =sdf1.parse(str1);
		
		System.out.printf("字符串  %s  通过转换变成了 %s  ",str1,date2.toString());//使用格式化输出
		//字符串转日期需要配合异常类一起使用,如果没有必须保证转换字符串与 默认时间格式相同
		
	}

}

Calendar日历类

java.util包下

常用于进行“翻日历”,比如下个月的今天是多久

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

public class Demo06 {

	
	private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");
	
	public static void main(String[] args) {
		// Calendar
		Date dtn1 =new Date();
		Date date2 =new Date(0);//设置时间为初始化时间Thu Jan 01 08:00:00 CST 1970
		Calendar  cd1 =Calendar.getInstance();
		Calendar cd2 = Calendar.getInstance();
		Date date1=cd1.getTime();
		System.out.println(date1);
		System.out.println(date2);
		
		cd1.setTime(date2);
		System.out.println(cd1.getTime());
		
//		add方法,在原日期上增加年/月/日
//		set方法,直接设置年/月/日
		
		dtn1=cd2.getTime();
		Date dtn =cd1.getTime();
		System.out.println("当前时间为:"+format(dtn));
		System.out.println(cd1.getTime());
		cd1.setTime(dtn);
		cd1.add(Calendar.MONTH, 6);
		System.out.println("初始化日期下个月的今天:"+format(cd1.getTime()));
		cd2.setTime(dtn1);
		cd2.add(Calendar.MONTH, 6);
		System.out.println("下6个月的今天:"+format(cd2.getTime()));
		cd2.add(Calendar.MONTH,-2);
		System.out.println("上2个月的今天"+format(cd2.getTime()));
	
		
	}
	private static String format(Date time) {
		
		return sdf.format(time);
	}

}

欢迎讨论,纠正补充————————————————————————

发布了22 篇原创文章 · 获赞 0 · 访问量 387

猜你喜欢

转载自blog.csdn.net/weixin_44657829/article/details/104659748