• JAVA中的时间操作知识梳理


    JAVA中的时间操作

    java中的时间操作不外乎这四种情况:

    1、获取当前时间

    2、获取某个时间的某种格式

    3、设置时间

    4、时间的运算

    好,下面就针对这四种情况,一个一个搞定。

     

    一、获取当前时间

     

    有两种方式可以获得,第一种,使用Date类。

    j2SE的包里有两个Date类,一个是java.sql.Date,一个是java.util.Date

    这里,要使用java.util.Date。获取当前时间的代码如下

    Date date = new Date();

    date.getTime();(返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。)

    还有一种方式,使用System.currentTimeMillis();

     

    这两种方式获得的结果是一样的,都是得到一个当前的时间的long型的时间的毫秒值,这个值实际上是当前时间值与1970年一月一号零时零分零秒相差的毫秒数。

    当前的时间得到了,但实际的应用中最后往往不是要用这个long型的东西,用户希望得到的往往是一个时间的字符串,比如“2006年6月18号”,或“2006-06-18”,老外可能希望得到的是“06-18-2006”,诸如此类等等。这就是下一个要解决的问题

     

    二、获取某个时间的某种格式

     

    获取时间的格式,需要用到一个专门用于时间格式的类java.text.SimpleDateFormat。

    首先,定义一个SimpleDateFormat变量

    SimpleDateFormat sdf = new SimpleDateFormat("",Locale.SIMPLIFIED_CHINESE);

    这个构造函数的定义如下:

    SimpleDateFormat(String pattern, Locale locale)

    第一个参数pattern,我们后面再解释,这里我们使用一个"",第二个参数,是用来设置时区的,这里用到了java.util.Locale这个类,这个类了面定义了很多静态变量,直接拿过来用就OK,我们把时区设置为Locale.SIMPLIFIED_CHINESE,只看名字,这个静态变量的意义已经很清楚了。

     

    接下来我们使用这个SimpleDateFormat把当前时间格式化为一个如下格式的时间字符串“XXXX年XX月XX日_XX时XX分XX秒”,代码:

    sdf.applyPattern("yyyy年MM月dd日_HH时mm分ss秒");

    String timeStr = sdf.format(new Date());

     

    获取时间格式的函数是format,这个函数的参数是java.util.Date对象,这个没有什么花头。

    要说明一下的是这个pattern,所谓的模式。这里,yyyy,MM,dd等,这就是模式。

    我们可以在SimpleDateFormat的构造函数中指定模式,比如

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd",Locale.SIMPLIFIED_CHINESE);

    也可以获取时间格式的时候使用applyPattern函数临时指定,上面的例子就是这样。

    什么字符代表什么,这是j2se约定好的,设置模式的时候,我们可以使用约定好的字符加上任何我们想要的字符串。

    j2se对字符所代表的模式的约定列表如下:

     

     

    Letter

    Date or   Time Component

    Presentation

    G

    Era   designator

    Text

    y

    Year

    Year

    M

    Month in   year

    Month

    w

    Week in   year

    Number

    W

    Week in   month

    Number

    D

    Day in year

    Number

    d

    Day in   month

    Number

    F

    Day of week   in month

    Number

    E

    Day in week

    Text

    a

    Am/pm marker

    Text 

    H

    Hour in day   (0-23)

    Number

    k

    Hour in day   (1-24)

    Number

    K

    Hour in   am/pm (0-11) 

    Number

    h  

    Hour in   am/pm (1-12) 

    Number

    m  

    Minute in   hour 

    Number

    s  

    Second in   minute 

    Number

    S  

    Millisecond 

    Number  

    z  

    Time   zone  

    General   time zone 

    Z  

    Time   zone 

    RFC 822   time zone 

    三,设置时间

    现在设置时间,推荐 使用java.util.Calendar类来进行操作,因为java.util.Date类很多方法都过时了,
    Calendar 类有很多重载的设置时间的方法
    我们可以针对于某一项进行设置,也可以同时进行很多设置

    void

    set(int field, int value) 
                将给定的日历字段设置为给定值。

     void

    set(int year, int month, int date) 
                设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。

     void

    set(int year, int month, int date,   int hourOfDay, int minute) 
                设置日历字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值。

     void

    set(int year, int month, int date,   int hourOfDay, int minute, int second) 
                设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值。

    其中第一个就是给特定的字段设值,后面三个就是针对多个字段赋值

    四,时间运算

    时间的运算,无外乎就是加加减减,然后比较谁早谁晚而已,这些需求JAVA的API已经帮我们实现的很好了。一般比较时间的可以用如下的方法

    abstract  void

    add(int field, int amount) 
                根据日历的规则,为给定的日历字段添加或减去指定的时间量。

     boolean

    after(Object when) 
                判断此 Calendar 表示的时间是否在指定 Object 表示的时间之后,返回判断结果。

     boolean

    before(Object when) 
                判断此 Calendar 表示的时间是否在指定 Object 表示的时间之前,返回判断结果。


    第一个是给某个字段加上某个数量的时间,虽然这个方法名叫add ,我们要减也是调用它的,只不过我们传入的是负数。

    其实JAVA对时间操作的支持还是挺丰富的。希望大家的日常的使用中有更多的发现。

  • 相关阅读:
    使用terraform管理Proxmox VE资源
    Terraform Aliyun 创建ecs, kubernetes 实例
    如何在cmd中启动redis
    图片二维码解析URL
    Python爬取百度图片
    Python 爬取b站专栏图片
    python之JS逆向—破解头条抖音登录协议
    python 连接 mongodb 获取部分字段数据并换行写入txt文件
    列表套字典三者匹配对应关系
    python线程池 ThreadPoolExecutor 的用法及实战
  • 原文地址:https://www.cnblogs.com/mayhelp/p/3174754.html
Copyright © 2020-2023  润新知