Java中的时间

来源:互联网 发布:信用卡淘宝退款 编辑:程序博客网 时间:2024/06/05 12:39

这里写图片描述

Date

java.util.date对象表示一个精确到毫秒的瞬间,但是在JDK1.0的时候就已经存在了,所以其中有很多的方法都已经过时了,如果贸然使用可能会出现性能/安全方面的问题,下面介绍几个剩下的为数不多的方法

  • 构造器
    • Date():在底层调用System.currentTimeMillis()
    • Date(long date):根据指定的long整数(从1970-1-1 00:00:00以来经过的毫秒数)来生成Date对象.
  • 方法
    • boolean before(Date time):返回传入时间是否在当前时间的前面
    • boolean after(Date time):返回传入时间是否在当前时间的后面
    • long getTime():返回从1970-1-1:00:00:00:0000到Date对象所经过的毫秒数
    • void setTime(long time):设置时间,time和上面的含义相同
public class TestTime {    public static void main(String[] args) {        Date before = new Date();        Date after = new Date(System.currentTimeMillis() + 1);        System.out.println("Before : " + before.getTime());        System.out.println("after : " + after.getTime());        System.out.println(before.before(after));        System.out.println(before.after(after));        before.setTime(System.currentTimeMillis()+5);        System.out.println("before : " + before.getTime());    }}

Calendar

由于Date类存在缺陷,所以又设计了Calendar类来处理日期和时间Calendar是一个抽象类,是所有日历类的模板,所以加入我们要设计自己的日历(比如阴历)就可以继承Calendar类来实现。

  • Calendar类还可以和Date类相互转换:
public class CalendarTest {    public static void main(String[] args) {        Calendar calendar = Calendar.getInstance();        Date time = calendar.getTime();        System.out.println(calendar);        System.out.println(time.getTime());        System.out.println(calendar.get(Calendar.DATE));    }}

日期格式化

java.text.SimpleDateFormat可以灵活的格式化Date,也可以用于解析各种日期格式字符串,创建SimpleDateFormat对象的时候需要传入一个pattern字符串,这个字符串不是正则表达式的字符串,而是日期格式的模板字符串

SimpleDateFormat中最常用的方法

方法 描述 String formate(Date date) 将时间解析为指定字符串格式 Date parse(String timeString) 将指定格式的时间字符串转换为时间
public class FormatTest {    public static void main(String[] args) throws ParseException {        Date date = new Date();        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");        System.out.println(sdf.format(date));        String timeString = "2017-08-30 10:12:12";        Date newDate = sdf.parse(timeString);        System.out.println(newDate);    }}

时间存储

将时间存入数据库的时候会涉及到不同时区的问题,因此在设计数据库表的时候可以将时间设置为BIGINT(64位),来存储从1970年1月1日0点的时间到现在的毫秒数

  • 优点:
  • 不同时区读出来的时间转换为日期格式的时候都是当前时区的日期
  • 缺点:
  • 数据库中查看时间的时候,只能看到一串数字
0 0
原创粉丝点击