首页 > 编程语言 > 详细

Java基础 - Date的相关使用(获取系统当前时间)

时间:2020-02-11 16:53:16      阅读:80      评论:0      收藏:0      [点我收藏+]

前言:

  在日常Java开发中,常常会使用到Date的相关操作,如:获取当前系统时间、获取当前时间戳、时间戳按指定格式转换成时间等。以前用到的时候,大部分是去网上找,但事后又很快忘记。现为方便自己今后查阅,也方便各位猿友学习探讨,在此将我们常用的时间实例、函数归纳罗列出来,供大家参考,如有不对,欢迎在评论区共同探讨。

1、获取系统当前时间

  获取系统当前时间,我们经常会用到,如:判断优惠券是否已经过期、更新某条数据的时间等。(当然,这些也可以在sql中进行)

 方法一:

  Date类对象是用来表示时间和日期的,这个类提供了一系列操作时间和日期的函数,获取系统当前时间就是我们最常用的。如下:

 1 public static void main(String[] args) {
 2     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
 3     SimpleDateFormat dateForm24 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 4     Date date1 = new Date();
 5     System.out.println("系统当前时间是(未格式化):" + date1);
 6     System.out.println("系统当前时间是(已格式化):" + dateFormat.format(date1));
 7     System.out.println("系统当前时间是(格式-24):" + dateForm24.format(date1));
 8 }
 9 控制台输出:
10 系统当前时间是(未格式化):Fri Dec 27 16:43:47 CST 2019
11 系统当前时间是(已格式化):2019-12-27 04:43:47
12 系统当前时间是(格式-24):2019-12-27 16:43:47

  从控制台输出,我们可以看到,同一个时间有三种表达样式。这里解释一下,第一种是格林威治时间格式,这通常不是我们想要的结果,所以引入了后两种。

  后两种我们使用了时间日期格式化类(SimpleDateFormat)来把时间格式化成我们想要的样式。这里需要注意的是,后两种在“小时”的样式上略有不同,小写的“hh”表示12小时制,大写的“HH”则为24小时制,我们使用时可根据需求而定。

 方法二:

  除了Date类,我们还经常使用Calendar类来操作时间和日期,我们可以把它看做是Date类的增强版,因为Calendar类提供了一组方法,允许将一个以毫秒为单位的时间转换成年、月、日、时、分、秒、星期等。我们可以把Calendar类看做是万年历,默认显示的是当时间,同时也可以查看其他时间。如下:(其实,Calendar底层也是通过new Date() 获取Date实例)

 1 public static void main(String[] args) {
 2     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 3     Calendar calendar = Calendar.getInstance();
 4     Date date2 = calendar.getTime();
 5     System.out.println("系统当前时间是:" + dateFormat.format(date2));
 6     //还可以使用[年月日 时分秒]拼接的方式获取;
 7     int year        = calendar.get(Calendar.YEAR);          //
 8     int month       = calendar.get(Calendar.MONTH)+1;       //月(从0开始,故要+1):11
 9     //星期几:先判断一周的第一天是不是星期天;如果是,则-1;
10     int dayOfWeek   = calendar.getFirstDayOfWeek()==Calendar.SUNDAY?calendar.get(Calendar.DAY_OF_WEEK)-1:calendar.get(Calendar.DAY_OF_WEEK);
11     int dayOfYear   = calendar.get(Calendar.DAY_OF_YEAR);   //日(年的第N日)
12     int dayOfMonth  = calendar.get(Calendar.DAY_OF_MONTH);  //日(月的第N日)
13     int day         = calendar.get(Calendar.DATE);          //日(同上)
14     int hourOfDay   = calendar.get(Calendar.HOUR_OF_DAY);   //时(24小时制)
15     int hour        = calendar.get(Calendar.HOUR);          //时(12小时制)
16     int minute      = calendar.get(Calendar.MINUTE);        //
17     int second      = calendar.get(Calendar.SECOND);        //
18     int millisecond = calendar.get(Calendar.MILLISECOND);
19     System.out.println("现在是:"+year+"年"+month+"月"+day+"日"
20             +hourOfDay+"点("+hour+"点)"+minute+"分"+second+"秒"+millisecond
21             +"毫秒,星期"+dayOfWeek+",这是"+year+"年的第"+dayOfYear+"天.");
22 }
23 
24 控制台输出:
25     系统当前时间是:2019-12-27 17:16:17
26     现在是:2019年12月27日17点(5点)16分17秒94毫秒,星期5,这是2019年的第361天.

  这里有两个地方需要注意:

  1、获取月份:int month = calendar.get(Calendar.MONTH)+1; 直接获取到的月份默认是从0开始的,即当前12月获取到的是11,所以这里要 +1;

  2、获取星期:上面我用了个三元,拆开来就是要比较【一周的第一天是不是周日】。

 1 //int dayOfWeek   = calendar.getFirstDayOfWeek()==Calendar.SUNDAY?calendar.get(Calendar.DAY_OF_WEEK)-1:calendar.get(Calendar.DAY_OF_WEEK);
 2 //当前星期几
 3 int dayOfWeek   = calendar.get(Calendar.DAY_OF_WEEK);
 4 //一周的第一天
 5 int firstDayOfWeek = calendar.getFirstDayOfWeek();
 6 //星期日
 7 int sunday = Calendar.SUNDAY; 
 8 //如果一周的第一天是星期日,则需要-1;
 9 if (firstDayOfWeek==sunday){
10     dayOfWeek --;
11 }
12 System.err.println("今天是星期" + dayOfWeek);

 方法三:

  除了直接获取时间,我们还可以通过获取当前时间的毫秒值,然后再转换成时间。

 1 public static void main(String[] args) {
 2     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 3     long nowLong=System.currentTimeMillis();   //获取出来的是当前时间的毫秒值
 4     //把毫秒值转换成时间格式
 5     Date date = new Date();
 6     date.setTime(nowLong);
 7     System.out.println("系统当前时间是:" + dateFormat.format(date));
 8 }
 9 //控制台输出:
10 //    系统当前时间是:2019-12-27 18:00:00 --->这是什么意思???????

  Tip:以上就是获取系统当前时间的三种方式,各位大佬有其他更好的方式,欢迎评论区补充。

  

Java基础 - Date的相关使用(获取系统当前时间)

原文:https://www.cnblogs.com/qiuhaitang/p/12107834.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!