java日期类

2 篇文章 0 订阅

常用日期类类

java中有几个日期类,mysql中也有日期类型,有时候看到既能用java日期对象封装mysql日期类型,也能用字符串String封装mysql日期类型。对于新手coder来说,可以参考本文中对日期类型的介绍,为了避免mysql java前台中日间格式转化把人绕晕,一个给自己的建议就是
1. mysql datetime
2. java TimeStamp
3. 前台 js格式化时间为你想要的格式

Calendar

java中常用的日期相关的类有俩,一个是Calendar,一个是Date。
很少在项目中看到有人直接使用Calendar,顶多用其输出毫秒数,本地看一下程序的执行时间。


// Calendar使用不多,会用其获取年月日即可
    System.out.println("Calendar测试------------------");
    Calendar calendar = Calendar.getInstance();
    System.out.println(calendar.getTime());
    System.out.println(calendar.get(Calendar.YEAR));
    System.out.println(calendar.getTimeInMillis());

Date

 // 日期类直接输出是西方的格式
    System.out.println("Date测试-------------------------");
    Date today = new Date();
    System.out.println(today);
    System.out.println(today.getTime()); //返回时间戳数字

TimeStamp

该类来自于 java.sql.Timestamp,它是Date的子类。

// 时间戳继承自Date
Timestamp timestamp = new Timestamp(4154356);
System.out.println("时间戳: "+timestamp+"----------------------------");
Timestamp timestamp1 = Timestamp.valueOf("2021-12-09 23:00:00");
System.out.println(timestamp1);

SimpleDateFormat

Date类的时间格式与我们常见的格式差别很大,SimpleDateFormat可以将Date类转化为字符串格式的时间。也可以将字符串格式的时间传化为Date。

System.out.println("SimpleDateFormat的使用----------------------------------");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
// 下面getTime()返回一个很怪异的时间,不过平时用不到下面的方法,要聚焦于格式化日期
System.out.println(simpleDateFormat.getCalendar().getTime());

System.out.println("字符串与日期的转化------------------------------");
/*
 * 因为使用Date类与字符串时间相互转化十分困难,因此,考虑Date类的其他子类。
 * DateFormat是日期/时间格式化子类的抽象类,它与以语言无关的方式格式化并解析日期或时间,
 * 是抽象类,所以使用其子类SimpleDateFormat实现日期和字符串的相互转换。*/
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 将字符串转化为日期
Date date1 = sdf.parse("2000-12-16 16:52:39");
System.out.println(date1);
//将日期格式化为标准字符串
Date date2 = new Date();
String str = sdf.format(date2);
System.out.println(str);

输出结果

Calendar测试------------------
Thu Dec 09 23:51:20 CST 2021
2021
1639065080784
Date测试-------------------------
Thu Dec 09 23:51:20 CST 2021
1639065080812
时间戳: 1970-01-01 09:09:14.356----------------------------
2021-12-09 23:00:00.0
SimpleDateFormat的使用----------------------------------
Tue Dec 09 23:51:20 CST 1941
字符串与日期的转化------------------------------
Sat Dec 16 16:52:39 CST 2000
2021-12-09 23:51:20

mysql日期类型

mysql中常用的日期类型有以下三种:datetime timestamp date
在这里插入图片描述

date

mysql中date类型只包含日期,并不含时分秒。可以用java的Date或者TimeStamp封装mysql查询出来的date,并且会自动补齐Date类的时分秒为 00:00:00 。
在这里插入图片描述

如果直接通过浏览器访问后台接口,会发现浏览器默认将日期解析成 yyyy-MM-dd HH:mm:ss 这种格式 (例子中 TimeStamp封装的date)
在这里插入图片描述

java字符串封装date

验证后台确实可以用String封装mysql的date,它会直接把数据表中的时间转化为字符串。但是此时时间信息是个字符串,从下图可以看到不能用Date类的方法直接获取年 月 日等特定信息了。若是用String封装了 date,如果想获取年 月 分 等信息,需要先把字符串转化为Date,这太他妈的多此一举了。
在这里插入图片描述

因此不建议用String封装mysql的date,查询出来的时间建议用TimeStamp类保存。

time

只存储时间时 分 秒,不存储年月日信息。信息不足,实际中不建议用。

datetime

mysql的datetime真正对应于java的Date,不过一般用TimeStamp封装datetime最合适。我建议平时我开发过程中存储时间信息都用datetime类型,datetime存储的时间信息比较完整。
mysql中datetime默认被格式化为YYYY-MM-DD HH:MM:SS。
后台查出时间之后,不必格式化,可以直接将时间信息以TimeStamp类型返回到前台,前台用 js 对时间进行格式化处理。如果返回字符串到前台,前台想更改格式,还得先将其转化为日期,再更改格式,太麻烦了。
在这里插入图片描述

timestamp

timestamp的用法与datetime 差异很小,最大差别在于timestamp占用字节更少,因此表示的范围较datetime更小。

实际应用

为了避免mysql java 前台中日间格式转化把人绕晕。一个给自己的建议就是
mysql datetime
java TimeStamp
前台 js格式化时间为你想要的格式
菜鸡阶段不要考虑什么优化的问题,约定大于奇技淫巧。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值