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);
}
}
欢迎讨论,纠正补充————————————————————————