JAVA日期

本文详细介绍了Java中Date类的使用,包括时间原点、获取年月日时分秒的方法、SimpleDateFormat的日期格式化,以及如何进行日期的比较、时区转换和字符串与日期的相互转换。此外,还探讨了TimeZone的使用以及日期的默认值。
摘要由CSDN通过智能技术生成

日期Date

1.Date类

注意:是java.util.Date;(而非 java.sql.Date,此类是给数据库访问的时候使用的)

2.时间原点

对应的日期:1970年1月1日 早上8点0分0秒

为什么是8点?因为中国的太平洋时区是UTC-8,刚好和格林威治时间差8个小时。
为什么对应1970年?因为1969年发布了第一个 UNIX 版本:AT&T,综合考虑,当时就把1970年当做了时间原点。
注:所有的日期,都是以为这个0点为基准,每过一毫秒,就+1。

举例:

 Date date = new Date();
 long time = date.getTime();
 System.out.println(time);
 //输出的是1649921123440  1970-01-01 00:00:00到程序运行的时候的时间的毫秒数
long millis = System.currentTimeMillis();
System.out.println(millis); 
//另一种写法  也是获取原点到现在的毫秒数

3.get获取年月日时分秒

举例:

getYear 年

getMonth 月

getDate 日

getHours 时

getMinutes 分

getSeconds 秒

getDay 周

//日期字符串
StringBuilder datetext = new StringBuilder();
Date date = new Date();
int year = date.getYear();
//因为时间最开始是从1900年开始算的 所以输出的是122年  所以如果要得到今年的数字的话  就得加上1900
datetext.append(year+1900+"年");
int month = date.getMonth()+1;
datetext.append(month< 10? "0"+month+"月":month+"月");
int day = date.getDate();
datetext.append(day<10? "0"+day+"日":day+"日");
int hours = date.getHours();
datetext.append(hours<10? " 0"+hours+"时":" "+hours+"时");
int minutes = date.getMinutes();
datetext.append(minutes<10? "0"+minutes+"分":+minutes+"分");
int seconds = date.getSeconds();
datetext.append(seconds<10? "0"+seconds+"秒":+seconds+"秒");

//周的话 比较特殊 没有指定的方法直接获取 但可以转换一下
String week = " 星期";
        switch (dayofweek){
            case 1 -> week+="一";
            case 2 -> week+="二";
            case 3 -> week+="三";
            case 4 -> week+="四";
            case 5 -> week+="五";
            case 6 -> week+="六";
            default -> week+="日";
        }
        datetext.append(week);

4.SimpleDateFormat 日期格式化类

y 代表年
M 代表月
d 代表日
H 代表24进制的小时
h 代表12进制的小时
m 代表分钟
s 代表秒
S 代表毫秒

举例:

@Test
    public void test03(){
        //日期格式化字符串
        Date date = new Date();
        //实例化一个时间字符串格式对象 并传入时间字符串模板
        //2022-04-14 15:10:33
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
        System.out.println(dateFormat);
    }

5.parse字符串转日期(反解析字符串)

反解析必须用到Try。。。 catch

举例:

//反解析字符串
String source = "1983-11-22 20:30:00";
try {
    Date parse = dateFormat.parse(source);
    System.out.println(parse);
} catch (ParseException e) {
    throw new RuntimeException(e);
}

6.TimeZone 更改时区

举例:

Date date = new Date();
//2022-04-14 15:10:33
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo"));
        //将时区更改为日本
        String format = dateFormat.format(date);
        System.out.println(format);
        //输出

7.isBefore和isAfter 对比时间早晚 返回布尔值

7.1手写

举例:

@Test
public void test04(){
    //实例化一个时间字符串格式对象 并传入时间字符串模板
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    String text01 = "1983-11-22 20:30:00";  //建立字符串
    String text02 = "1988-10-08 20:30:00";
    try {
        Date date01 = dateFormat.parse(text01);//字符串反解析成时间
        Date date02 = dateFormat.parse(text02);
        boolean isBefore = date01.getTime() - date02.getTime() < 0?true:false; //时间对比
        boolean isAfter = date01.getTime() - date02.getTime() > 0?true:false;
        System.out.println(isBefore);//输出
        System.out.println(isAfter);

7.2系统方法

public void test04(){
    //实例化一个时间字符串格式对象 并传入时间字符串模板
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    String text01 = "1983-11-22 20:30:00";  //建立字符串
    String text02 = "1988-10-08 20:30:00";
    try {
        Date date01 = dateFormat.parse(text01);//字符串反解析成时间
        Date date02 = dateFormat.parse(text02);
		System.out.println(date01.before(date02));//直接利用方法对比后输出
		System.out.println(date01.after(date02));

8.toGMTString和toLocaleString

toGMTString: 返回指定时区的时间 GMT为地区

toLocaleString:返回一个以当前区域设置的长默认格式编写的日期字符串(不同的区域设置和语言设置,执行的输出结果可能不同)。

@Test
public void test05(){
    Date date = new Date();
    System.out.println(date);
    //指定时区的时间
    String gmtString = date.toGMTString();
    //转换为当地时间的字符串
    String localeString = date.toLocaleString();
    System.out.println(gmtString);
    System.out.println(localeString);

}

9.getDefault 返回日期当前的默认值

//  输出当前系统默认时区sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null]
        System.out.println(TimeZone.getDefault());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值