java时间日期的各种转换总结以及应用实例

由于工作中经常要用到时间,日期,以及当前时间的毫秒值等

很多时候涉及到了它们之间的相互转换,今天就好好的总结一下.

首先基本介绍一下java中有关时间,日期的类

1. Date类

里面的很多方法已经过时被Calendar或者DateFormat类取代

两种常用的构造方法实例:(其余的已经过时)


Date date = new Date();
// 这种构造方法传递的参数是1970年1月1日到传递时间所经历的毫秒数
Date date2 = new Date(System.currentTimeMillis());
输出的结果如下:
Sat Mar 17 10:13:23 CST 2018
Sat Mar 17 10:13:23 CST 2018

2. Calendar类

常用的初始化方法:

Calendar calendar = Calendar.getInstance();
// 返回的结果:
java.util.GregorianCalendar[time=1521253372638,areFieldsSet=true,areAllFieldsSet=true,
lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",
offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],
firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2018,MONTH=2,WEEK_OF_YEAR=11,
WEEK_OF_MONTH=3,DAY_OF_MONTH=17,DAY_OF_YEAR=76,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=3,
AM_PM=0,HOUR=10,HOUR_OF_DAY=10,MINUTE=22,SECOND=52,MILLISECOND=638,
ZONE_OFFSET=28800000,DST_OFFSET=0]// 从结果中可以看到,相比于Date类,Calendar类包含了更多的信息
// 除了年月日,时分秒等基本信息还包括当前时间的毫秒值,所在时区等各种信息

3. DateFormat类

初始化方法:

SimpleDateFormat sdf =new SimpleDateFormat("yyyyMMddHHmmssS");

这里简单介绍日期类型常用的format格式:

1.yyyy指的是年(类似于2018), yy指的是年的后两位(类似于18)
2.大写的MM指的是月份,小写的mm指的是分钟
3.dd指的是天
4.大写的HH表示的是24小时制,hh表示的是12小时制
5.ss指的是秒,ssS指的是精确到毫秒
6.为了看起来更容易辨认,可以在format格式部分使用诸如:之类的符号进行分隔
返回结果:
java.text.SimpleDateFormat@bcd152f3
// 返回的结果是这个类的名字 + 这个类的hash码,因为没有重写toString()方法.
// 即getClass().getName() + "@" + Integer.toHexString(hashCode())

对三种时间日期常用类就介绍到这里,
下面主要通过实际应用来了解这几种类之间的相互转换

首先介绍当前时间毫秒值的获取方式

Long l = System.currentTimeMillis();
Long time = new Date().getTime();
Long millis = Calendar.getInstance().getTimeInMillis();

接下来就是各种的转换过程:

1. Date类型转变成对应时间的毫秒值

Date date = new Date();
SimpleDateFormat sdf =new SimpleDateFormat("yyMMddHHmm");
try {Date d = sdf.parse("1803170000");System.out.println(d.getTime());} catch (ParseException e) {e.printStackTrace();}

2.Calendar类型转变成对应时间的毫秒值

Calendar calendar = Calendar.getInstance();
//这里需要注意一下,calendar传入的月份,是从0开始计数的(也就是说,2月相当于实际的三月)
calendar.set(2018, 2, 17);
System.out.println(calendar.getTimeInMillis());

接下来介绍Date类型如何转变成指定format格式的日期类型

首先回忆一下,Date类型本来是长这个样子的:

Sat Mar 17 13:24:30 CST 2018

1.Date类型转变成年月日时分秒的format格式

Date date = new Date();
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(date));

转换过后的结果是这样的:

2018-03-17 13:28:41

从结果上看,还是挺美观的吧~


可能我们平时还会有这样的需求,要将普通的Date格式转换成精确到秒的格式:
类似于这样的20180317133112
表达的含义是2018年3月17日13时31分12秒
这种情况该如何做呢?

Date date = new Date();
SimpleDateFormat sdf =new SimpleDateFormat("yyyyMMddHHmmss");
System.out.println(sdf.format(date));

稍微调整一下format格式就可以做到啦!

Date类型和Calendar类型之间的相互转换

1.Date类型转换为Calendar类型

Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());

2.Calendar类型转换为Date类型

Calendar calendar = Calendar.getInstance();
calendar.getTime();

接下来介绍指定的String format格式转变为Date,Calendar类型

1.String转换为Date类型

String str="2018-3-17";
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
try {Date birthday = sdf.parse(str);System.out.println(birthday);} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}

执行完毕的结果是这样的:

Sat Mar 17 00:00:00 CST 2018

2.String转换为Calendar类型

String str="2018-3-17";
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {date = sdf.parse(str);} catch (ParseException e) {e.printStackTrace();}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
System.out.println(calendar);

几个小的案例

工作中遇到的几个小需求

1. 根据毫秒值来获取当前的日期

 /*** 根据时间的毫秒值来获取当天的日期 日期格式 :yyyy-MM-dd* @param timeMillies(时间的毫秒值)* @return*/public static String getStringDate(Long timeMillies){Date date = new Date();date.setTime(timeMillies);SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");return sdf.format(date);}

2. 将毫秒格式的字符串转变成当前的秒数(也就是降低精度)

  /*** 将字符串格式的时间转为秒的值** @param dateTime*            字符串时间(格式:2018-08-29 23:59:46.08)* @return*/public static Long getLongFromString(String dateTime) {try {/*** 将字符串数据转化为秒数*/SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//24小时制if (dateTime == null || dateTime.equals("")){return null;}return simpleDateFormat.parse(dateTime).getTime();} catch (Exception e ) {return null;}
做一个测试 :
 g l =getLongFromString("2018-08-30 00:00:03.500");Long l2 = getLongFromString("2018-08-30 00:01:03.600");System.out.println(l2 - l );
这两个时间戳正常的结果应该是 相差: 60100毫秒
但是现在计算输出的结果变成了 相差 : 60000毫秒
已经实现了该需求 !

3. 将给定的日期格式变成我们想要的日期格式

   /*** 将传入的字符串日期 标准化输出* 传入参数 : 20180830  结果 : 2018-08-30* @param str* @return*/public static String getFormatDate(String str){SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); //传入参数的format格式SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); //输出结果的format格式try {Date date = sdf.parse(str.trim());return dateFormat.format(date);} catch (ParseException e) {return "";}}

如上:就是我能想到的一些互相转换的方式了,
以后如果在工作中在应用到新的在持续进行更新,
希望能对大家有所帮助!

java时间,日期,毫秒值,String的相互转换总结相关推荐

  1. (待删除)js时间日期毫秒数之间的相互转换合集

    日期转换为毫秒 如果格式是:yyyy/mm/dd hh:mm:ss可以直接转换. var oldTime = (new Date("2018/07/09 14:13:11")).g ...

  2. 关于java获取当前时间 和 时间的毫秒值

    获取当前时间的方法 //第一种方法 long totalMilliSeconds = System.currentTimeMillis(); //第二种方法 (常用) Date date = new ...

  3. java 获取当前时间的毫秒值

    /*** 获取当前时间的毫秒值** @return*/public static String getSId() {SimpleDateFormat sdf = new SimpleDateForma ...

  4. java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)...

    转载地址:http://www.devba.com/index.php/archives/4581.html java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明); ...

  5. mysql java 日期格式化_(转)java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)...

    java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明);部分资料参考网络资源 1. java向MySQL插入当前时间的四种方式 第一种:将java.util.Date ...

  6. java时间日期格式化和JDBC中的处理

    java时间日期格式化和JDBC中的处理 时间格式化类 SimpleDateFormat类 字符串格式化为时间对象 .parse()方法 时间对象格式化为字符串 .format()方法 DateTim ...

  7. Java 时间日期操作

    Java 时间日期操作 文章目录 Java 时间日期操作 LocalDate LocalTime LocalDateTime 时间 日期时间 时区 ZoneId ZonedDateTime Zoned ...

  8. Java时间日期格式转换Date转String和String转Date

    Java时间格式转换大全 谢谢大神的时间格式转换稿子:https://blog.csdn.net/u010486495/article/details/79260448 查阅后发现没有我想要的,后经人 ...

  9. Java 时间日期整理

    java.util.Date类 java.util提供了Date类来封装日期和时间.实例化Date类的两个构造函数, Date();--当前时间 Date(long millisec);--距离格林威 ...

最新文章

  1. Opencv读取图片像素值
  2. c++ 二分查找的函数 lower_bound upper_bound binary_search
  3. 【设计模式 00】设计模式的六大原则
  4. 信息学奥赛C++语言: 队伍调整
  5. 使用busybox制作iniramfs
  6. 如何反映两条曲线的拟合精度_中走丝线切割机床的加工精度用什么来衡量
  7. transition css3 渐变效果
  8. 关于Unity 3D GUI不显示中文问题
  9. 台式机鼠标失灵打开计算机,终于懂了台式电脑鼠标键盘不能用怎么办了
  10. matplotlib使用笔记
  11. WIN7下VirtualBox “指令引用的0x0000000内存”报错问题
  12. uniapp微信小程序使用自定义字体和外部字体
  13. 7周入门数据分析:(2)分析界的No.1——Excel
  14. EF 之 System.InvalidOperationException
  15. 努比亚 Z5 mini刷机包 omni4.4.2改动V4.0 自用版 精简 MIUI特效
  16. APICloud(二):选择一张或多张图片
  17. 微信读书电脑版更改字体
  18. 基于微信小程序的校园二手交易
  19. 实时传输协议——RTP协议
  20. 【科普】HDMI vs DisplayPort vs DVI 傻傻分不清楚

热门文章

  1. Maven学习:依赖管理
  2. element-UI 弹出外部组件
  3. Swift编写–仿照Twitter客户端
  4. VS Code 配置 C/C++ 环境
  5. 计算机控制电梯报告总结,电梯实训总结范文(共10篇).doc
  6. Python爬虫抓取携程网机票信息并发邮件通知
  7. linux 监控丢包 脚本,ping发现掉包报警的shell代码
  8. 【解决】无法将“XXX”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次
  9. 常用数据加密和解密方法汇总
  10. 渗透测试国内外研究_浅析晶硅光伏背板阻隔性能测试(一)——水蒸气透过率测试...