前言:

  在日常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的相关使用(获取系统当前时间)的更多相关文章

  1. Java中Date各种相关用法

    Java中Date各种相关用法(一) 1.计算某一月份的最大天数 Java代码 Calendar time=Calendar.getInstance(); time.clear(); time.set ...

  2. java 获取系统当前时间并格式化

      java 获取系统当前时间并格式化 CreateTime--2018年5月9日11:41:00 Author:Marydon 实现方式有三种 updateTime--2018年7月23日09点32 ...

  3. java获取系统指定时间年月日

    java获取系统指定时间年月日 private String setDateTime(String falg) { Calendar c = Calendar.getInstance(); c.set ...

  4. Java基础-Date类常用方法介绍

    Java基础-Date类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.毫秒值概念 我们在查阅Date类的API文档时,会发现这样的一句话:"The cl ...

  5. Oracle,MySQL,sqlserver三大数据库如何获取系统当前时间

    Oracle中如何获取系统当前时间:用SYSDATE() MySQL中获取系统当前时间主要有以下几点: (1)now()函数以('YYYY-MM-dd HH:mm:SS')返回当前的日期时间,可以直接 ...

  6. 使用js时,如何获取系统当前时间并且得到格式为"yyyy年MM月"的日期

    1.使用js时,如何获取系统当前时间并且得到格式为"yyyy年MM月"的日期: 1 var newdate = new Date(); 2 var nowyear = newdat ...

  7. android service 样例(电话录音和获取系统当前时间)

    关于android service 的具体解释请參考: android四大组件--android service具体解释.以下将用两个实例具体呈现Android Service的两种实现. 一个是st ...

  8. js 获取系统当前时间,判断时间大小

    1.获取系统当前时间 getNowTime(tempminit) { if (!tempminit) { tempminit = 0; } var date = new Date(); date.se ...

  9. Unity3D获取系统当前时间,并格式化显示

    Unity 获取系统当前时间,并格式化显示.通过“System.DateTime”获取系统当前的时间,然后通过格式化把获得的时间格式化显示出来,具体如下: 1.打开Unity,新建一个空工程,Unit ...

随机推荐

  1. form中采用图片作为提交按钮

    <span style="font-size:14px;"><FORM name="formName" action="xxxx&q ...

  2. 信息熵、信息增益、信息增益率、gini、woe、iv、VIF

    整理一下这几个量的计算公式,便于记忆 采用信息增益率可以解决ID3算法中存在的问题,因此将采用信息增益率作为判定划分属性好坏的方法称为C4.5.需要注意的是,增益率准则对属性取值较少的时候会有偏好,为 ...

  3. 手撸XGBoost流程(未完成)

    网上的一篇文章,讲的挺清楚的. XGBoost原理分析及实践 XGBoost的原理 xgboost原理--刘建平博客 要注意的地方: 1.预测值y(pred)和损失函数L(y,y(hat))中的y(h ...

  4. http请求头缓存实现

    转自CSDN ouyang-web之路 原文链接:https://blog.csdn.net/cangqiong_xiamen/article/details/90405555 一.浏览器的缓存 st ...

  5. C# for循环提升效率的写法

    ,,,,,}; ,iLen=arr.Length;i<iLen;i++) //必须是显示申明,不能var { ........... }

  6. WEB前端资源集(二)

    在上一篇为大家整理出了一些资源网站,接下来给大家整理了一些开发中常用的工具. 开发工具篇 开发工具集 Sublime Text 3:SublimeText 3是一个代码编辑器,也是HTML和散文先进的 ...

  7. C++求解N阶幻方

    由一道数学题的联想然后根据网上的做法瞎jb乱打了一下,居然对了代码精心附上了注释,有兴趣的童鞋可以看一看..不说了,上代码!(自认为结构很清晰易懂) 1234567891011121314151617 ...

  8. 手工创建 efi,msr 分区 · Virgil Chan

    昨天在帮同学装 win10 的时候,不小心(不知道那是什么东西)把原系统的 efi 和 msr 盘删了,用 WinNTsetup 安装时 EFI PART 总显示红叉,安装后也进不去系统,想想应该是找 ...

  9. 服务治理与RPC · 跬步

    以前写过Django中使用zerorpc的方法,但是由于我们的Django是运行在gevent下,而zeromq需要启动一个后台进程处理消息,与gevent使用的greenlet携程是冲突的. 在Ja ...

  10. api安全规范

    1. API签名的目的 校验API调用者的身份,是否有权访问    校验请求的数据完整性,防止被中间人篡改    防止重放攻击 2.基本概念 AccessKey: API使用者向API提供方申请的Ac ...