Java旧版本时间、日期处理
发布日期:2021-11-04 11:54:25 浏览次数:16 分类:技术文章

本文共 5158 字,大约阅读时间需要 17 分钟。

目录


一、java.util.Date 

public static void main(String[] args){    // 获取当前时间:    Date date = new Date();    System.out.println(date.getYear() + 1900); // 必须加上1900    System.out.println(date.getMonth() + 1); // 0~11,必须加上1    System.out.println(date.getDate()); // 1~31,不能加1    // 转换为String:    System.out.println(date.toString());    // 转换为GMT时区:    System.out.println(date.toGMTString());    // 转换为本地时区:    System.out.println(date.toLocaleString());    // 获取指定Date对象的时间戳    System.out.println(date.getTime());}

测试输出:

2019

10
28
Mon Oct 28 15:48:04 CST 2019
28 Oct 2019 07:48:04 GMT
2019-10-28 15:48:04
1572248884000


从上述的测试可以发现:

1.getYear()返回的年份必须加上1900

2.getMonth()返回的月份是0~11分别表示1~12月,所以要加1

3.getDate()返回的日期范围是1~31,又不能加1

4.Date不能转换时区,除了toGMTString()可以按GMT+0:00输出外,Date总是以当前计算机系统的默认时区为基础进行输出。

5.Date可以直接通过getTime()方法转化为long型的毫秒值。

 

二、java.text.SimpleDateFormat

为了精确地控制日期和时间的输出格式,可以使用SimpleDateFormat来对Date进行格式转换。

预定义的格式化字符串如下:

  • yyyy:年
  • MM:月
  • dd: 日
  • HH: 小时
  • mm: 分钟
  • ss: 秒
public static void main(String[] args) {    // 获取当前时间:    Date date = new Date();    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    System.out.println(sdf.format(date));    Date d = sdf.parse("2019-11-11 20:30:28");    System.out.println(d);}

测试输出:

2019-10-28 15:48:04

1573475428000


从上述的测试可以发现:

1.SimpleDateFormat经常搭配Date一起使用,默认使用"yyyy-MM-dd HH:mm:ss"的输出格式。

2. SimpleDateFormat的parse方法可以将指定格式的时间串转化为Date对象。

 

三、java.util.Calendar

public static void main(String[] args){    System.out.println(new Date());    // 获取当前时间:    Calendar c = Calendar.getInstance();    int y = c.get(Calendar.YEAR);    int m = 1 + c.get(Calendar.MONTH);    int d = c.get(Calendar.DAY_OF_MONTH);    int w = c.get(Calendar.DAY_OF_WEEK);    int hh = c.get(Calendar.HOUR_OF_DAY);    int mm = c.get(Calendar.MINUTE);    int ss = c.get(Calendar.SECOND);    int ms = c.get(Calendar.MILLISECOND);    System.out.println(y + "-" + m + "-" + d + " " + w + " " + hh + ":" + mm + ":" + ss + "." + ms);}

测试输出:

Mon Oct 28 16:39:56 CST 2019

2019-10-28 2 16:39:56.666


从上述的测试可以发现:

1.Calendar获取年月日这些信息变成了get(int field)

2.返回的年份不必转换

3.返回的月份仍然要加1

4.返回的星期要特别注意,1~7分别表示周日,周一,……,周六。

5.Calendar只有一种方式获取,即Calendar.getInstance(),而且一获取到就是当前时间

 

如果我们想设置一个特定的日期和时间,就必须先清除所有字段:

public static void main(String[] args){    // 当前时间:    Calendar c = Calendar.getInstance();    // 清除所有:    c.clear();    // 设置2019年:    c.set(Calendar.YEAR, 2019);    // 设置10月:注意9表示10月:    c.set(Calendar.MONTH, 10 - 1);    // 设置28日:    c.set(Calendar.DATE, 28);    // 设置时间:    c.set(Calendar.HOUR_OF_DAY, 17);    c.set(Calendar.MINUTE, 30);    c.set(Calendar.SECOND, 31);            Date d = c.getTime();    System.out.println(d);    System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d));    // 2019-10-28 17:30:31}

测试输出:

Mon Oct 28 17:30:31 CST 2019

2019-10-28 17:30:31


从上述的测试可以发现:

1.利用Calendar.getTime()可以将一个Calendar对象转换成Date对象,然后就可以用SimpleDateFormat进行格式化了。

 

四、java.util.TimeZone

public static void main(String[] args) {    // 当前时区    TimeZone tzDefault = TimeZone.getDefault();    // GMT+9:00时区    TimeZone tzGMT9 = TimeZone.getTimeZone("GMT+09:00");    // 纽约时区    TimeZone tzNY = TimeZone.getTimeZone("America/New_York");    System.out.println(tzDefault.getID());     // Asia/Shanghai    System.out.println(tzGMT9.getID());     // GMT+09:00    System.out.println(tzNY.getID());     // America/New_York}

测试输出:

Asia/Shanghai

GMT+09:00
America/New_York


从上述的测试可以发现:

1.时区的唯一标识是以字符串表示的ID,我们获取指定TimeZone对象也是以这个ID为参数获取,GMT+09:00Asia/Shanghai都是有效的时区ID。

2.要列出系统支持的所有ID,请使用TimeZone.getAvailableIDs()

 

对指定时间进行时区转换:

public static void main(String[] args){    // 当前时间,默认系统时区    Calendar c = Calendar.getInstance();    // 清除所有,时区不变    c.clear();    // 设置为北京时区:    c.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));    // 设置年月日时分秒:    c.set(2019, 10 /* 11月 */, 20, 8, 15, 0);    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    System.out.println(sdf.getTimeZone());    System.out.println(sdf.format(c.getTime()));    // 2019-11-20 08:15:00    // 更改时区    sdf.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo"));    System.out.println(sdf.getTimeZone());    System.out.println(sdf.format(c.getTime()));    // 2019-11-20 09:15:00}

测试输出:

sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null]

2019-11-20 08:15:00
sun.util.calendar.ZoneInfo[id="Asia/Tokyo",offset=32400000,dstSavings=0,useDaylight=false,transitions=10,lastRule=null]
2019-11-20 09:15:00

 


从上述的测试可以发现:

1.时区转换是通过设置SimpleDateFormat的setTimeZone()方法来完成的。

2.Calendar 一般都采用Calendar.getInstance()来获取实例,默认时区为系统时区;可通过 setTimeZone() 来修改。

 

Calendar也可以对日期和时间进行简单的加减:

public static void main(String[] args){    // 当前时间:    Calendar c = Calendar.getInstance();    // 清除所有:    c.clear();    // 设置年月日时分秒:    c.set(2019, 10 /* 11月 */, 20, 8, 15, 0);    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    System.out.println(sdf.format(c.getTime()));    // 2019-11-20 08:15:00            // 加5天并减去2小时:    c.add(Calendar.DAY_OF_MONTH, 5);    c.add(Calendar.HOUR_OF_DAY, -2);            System.out.println(sdf.format(c.getTime()));    // 2019-11-25 6:15:00}

测试输出:

2019-11-20 08:15:00

2019-11-25 06:15:00

 

转载地址:https://blog.csdn.net/WXS_0218/article/details/102782595 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java8新版本时间、日期处理
下一篇:Java的动态代理

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年03月17日 04时32分30秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

java typedarray_TintTypedArray.java 2019-04-21
java字符字面量_java – 字符串字面量的行为是令人困惑的 2019-04-21
php判断数组的值是否为空,PHP判断数组是否为空的常用方法(五种方法) 2019-04-21
php 读数据库,PHP数据库 2019-04-21
PHP能不能下载报表,PHP生成Excel报表的方法 2019-04-21
php mht2html,PHP 处理 mht 文件 2019-04-21
rt2tr matlab,MATLAB机器人工具箱参考 2019-04-21
MATLAB中GUI界面弹出菜单的使用,Matlab GUIDE使用说明(Matlab GUI界面) 2019-04-21
win iis对比apache php,服务器Apache与IIS的区别 2019-04-21
怎样用xampp测试php环境变量,使用xampp配置php运行环境的方法 2019-04-21
python mod,mod_python的安装 2019-04-21
python分析彩票数据,这波太炸了!Python脚本可视化居然可以这么玩 2019-04-21
用matlab仿真mmc环流抑制器,一种基于准PR控制原理的MMC阀组环流抑制方法 2019-04-21
oracle 排序的分析函数,Oracle SQL:使用分析排序函数 2019-04-21
oracle direct for hdfs xi下载,ORACLE连接HDFS有个专项的解决方案 2019-04-21
java 403怎么抛出_java – 如何在Spring MVC中返回403禁止? 2019-04-21
java jsch工具类_Java工具集-JSch连接远程服务器工具类 2019-04-21
cmd背景变红1003无标题_怎样修改cmd中文字的大小、颜色和背景颜色呢 原来是这样的... 2019-04-21
php rand() 重复,php – mt_rand()给我总是相同的数字 2019-04-21
php taglib.php,thinkphp5 taglib自定义标签教程 2019-04-21