前言:
在日常 Java 开发中, 常常会使用到 Date 的相关操作, 如: 获取当前系统时间, 获取当前时间戳, 时间戳按指定格式转换成时间等. 以前用到的时候, 大部分是去网上找, 但事后又很快忘记. 现为方便自己今后查阅, 也方便各位猿友学习探讨, 在此将我们常用的时间实例, 函数归纳罗列出来, 供大家参考, 如有不对, 欢迎在评论区共同探讨.
1, 获取系统当前时间
获取系统当前时间, 我们经常会用到, 如: 判断优惠券是否已经过期, 更新某条数据的时间等.(当然, 这些也可以在 sql 中进行)
方法一:
Date 类对象是用来表示时间和日期的, 这个类提供了一系列操作时间和日期的函数, 获取系统当前时间就是我们最常用的. 如下:
- public static void main(String[] args) {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
- SimpleDateFormat dateForm24 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Date date1 = new Date();
- System.out.println("系统当前时间是(未格式化):" + date1);
- System.out.println("系统当前时间是(已格式化):" + dateFormat.format(date1));
- System.out.println("系统当前时间是(格式 - 24):" + dateForm24.format(date1));
- }
控制台输出:
系统当前时间是(未格式化):Fri Dec 27 16:43:47 CST 2019
系统当前时间是(已格式化):2019-12-27 04:43:47
系统当前时间是(格式 - 24):2019-12-27 16:43:47
从控制台输出, 我们可以看到, 同一个时间有三种表达样式. 这里解释一下, 第一种是格林威治时间格式, 这通常不是我们想要的结果, 所以引入了后两种.
后两种我们使用了时间日期格式化类 (SimpleDateFormat) 来把时间格式化成我们想要的样式. 这里需要注意的是, 后两种在 "小时" 的样式上略有不同, 小写的 "hh" 表示 12 小时制, 大写的 "HH" 则为 24 小时制, 我们使用时可根据需求而定.
方法二:
除了 Date 类, 我们还经常使用 Calendar 类来操作时间和日期, 我们可以把它看做是 Date 类的增强版, 因为 Calendar 类提供了一组方法, 允许将一个以毫秒为单位的时间转换成年, 月, 日, 时, 分, 秒, 星期等. 我们可以把 Calendar 类看做是万年历, 默认显示的是当时间, 同时也可以查看其他时间. 如下:(其实, Calendar 底层也是通过 new Date() 获取 Date 实例)
- public static void main(String[] args) {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Calendar calendar = Calendar.getInstance();
- Date date2 = calendar.getTime();
- System.out.println("系统当前时间是:" + dateFormat.format(date2));
- // 还可以使用 [年月日 时分秒] 拼接的方式获取;
- int year = calendar.get(Calendar.YEAR); // 年
- int month = calendar.get(Calendar.MONTH)+1; // 月(从 0 开始, 故要 + 1):11
- // 星期几: 先判断一周的第一天是不是星期天; 如果是, 则 - 1;
- int dayOfWeek = calendar.getFirstDayOfWeek()==Calendar.SUNDAY?calendar.get(Calendar.DAY_OF_WEEK)-1:calendar.get(Calendar.DAY_OF_WEEK);
- int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR); // 日(年的第 N 日)
- int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); // 日(月的第 N 日)
- int day = calendar.get(Calendar.DATE); // 日(同上)
- int hourOfDay = calendar.get(Calendar.HOUR_OF_DAY); // 时(24 小时制)
- int hour = calendar.get(Calendar.HOUR); // 时(12 小时制)
- int minute = calendar.get(Calendar.MINUTE); // 分
- int second = calendar.get(Calendar.SECOND); // 秒
- int millisecond = calendar.get(Calendar.MILLISECOND);
- System.out.println("现在是:"+year+"年"+month+"月"+day+"日"
- +hourOfDay+"点("+hour+"点)"+minute+"分"+second+"秒"+millisecond
- +"毫秒, 星期"+dayOfWeek+", 这是"+year+"年的第"+dayOfYear+"天.");
- }
控制台输出:
系统当前时间是: 2019-12-27 17:16:17
现在是: 2019 年 12 月 27 日 17 点(5 点)16 分 17 秒 94 毫秒, 星期 5, 这是 2019 年的第 361 天.
这里有两个地方需要注意:
1, 获取月份: int month = calendar.get(Calendar.MONTH)+1; 直接获取到的月份默认是从 0 开始的, 即当前 12 月获取到的是 11, 所以这里要 +1;
2, 获取星期: 上面我用了个三元, 拆开来就是要比较[一周的第一天是不是周日] .
- //int dayOfWeek = calendar.getFirstDayOfWeek()==Calendar.SUNDAY?calendar.get(Calendar.DAY_OF_WEEK)-1:calendar.get(Calendar.DAY_OF_WEEK);
- // 当前星期几
- int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
- // 一周的第一天
- int firstDayOfWeek = calendar.getFirstDayOfWeek();
- // 星期日
- int sunday = Calendar.SUNDAY;
- // 如果一周的第一天是星期日, 则需要 - 1;
- if (firstDayOfWeek==sunday){
- dayOfWeek --;
- }
- System.err.println("今天是星期" + dayOfWeek);
方法三:
除了直接获取时间, 我们还可以通过获取当前时间的毫秒值, 然后再转换成时间.
- public static void main(String[] args) {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- long nowLong=System.currentTimeMillis(); // 获取出来的是当前时间的毫秒值
- // 把毫秒值转换成时间格式
- Date date = new Date();
- date.setTime(nowLong);
- System.out.println("系统当前时间是:" + dateFormat.format(date));
- }
- // 控制台输出:
- // 系统当前时间是: 2019-12-27 18:00:00 --->这是什么意思???????
Tip: 以上就是获取系统当前时间的三种方式, 各位大佬有其他更好的方式, 欢迎评论区补充.
Java 基础 - Date 的相关使用(获取系统当前时间)
来源: http://www.bubuko.com/infodetail-3416248.html