java时间,日期,毫秒值,String的相互转换总结
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的相互转换总结相关推荐
- (待删除)js时间日期毫秒数之间的相互转换合集
日期转换为毫秒 如果格式是:yyyy/mm/dd hh:mm:ss可以直接转换. var oldTime = (new Date("2018/07/09 14:13:11")).g ...
- 关于java获取当前时间 和 时间的毫秒值
获取当前时间的方法 //第一种方法 long totalMilliSeconds = System.currentTimeMillis(); //第二种方法 (常用) Date date = new ...
- java 获取当前时间的毫秒值
/*** 获取当前时间的毫秒值** @return*/public static String getSId() {SimpleDateFormat sdf = new SimpleDateForma ...
- java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)...
转载地址:http://www.devba.com/index.php/archives/4581.html java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明); ...
- mysql java 日期格式化_(转)java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)...
java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明);部分资料参考网络资源 1. java向MySQL插入当前时间的四种方式 第一种:将java.util.Date ...
- java时间日期格式化和JDBC中的处理
java时间日期格式化和JDBC中的处理 时间格式化类 SimpleDateFormat类 字符串格式化为时间对象 .parse()方法 时间对象格式化为字符串 .format()方法 DateTim ...
- Java 时间日期操作
Java 时间日期操作 文章目录 Java 时间日期操作 LocalDate LocalTime LocalDateTime 时间 日期时间 时区 ZoneId ZonedDateTime Zoned ...
- Java时间日期格式转换Date转String和String转Date
Java时间格式转换大全 谢谢大神的时间格式转换稿子:https://blog.csdn.net/u010486495/article/details/79260448 查阅后发现没有我想要的,后经人 ...
- Java 时间日期整理
java.util.Date类 java.util提供了Date类来封装日期和时间.实例化Date类的两个构造函数, Date();--当前时间 Date(long millisec);--距离格林威 ...
最新文章
- Opencv读取图片像素值
- c++ 二分查找的函数 lower_bound upper_bound binary_search
- 【设计模式 00】设计模式的六大原则
- 信息学奥赛C++语言: 队伍调整
- 使用busybox制作iniramfs
- 如何反映两条曲线的拟合精度_中走丝线切割机床的加工精度用什么来衡量
- transition css3 渐变效果
- 关于Unity 3D GUI不显示中文问题
- 台式机鼠标失灵打开计算机,终于懂了台式电脑鼠标键盘不能用怎么办了
- matplotlib使用笔记
- WIN7下VirtualBox “指令引用的0x0000000内存”报错问题
- uniapp微信小程序使用自定义字体和外部字体
- 7周入门数据分析:(2)分析界的No.1——Excel
- EF 之 System.InvalidOperationException
- 努比亚 Z5 mini刷机包 omni4.4.2改动V4.0 自用版 精简 MIUI特效
- APICloud(二):选择一张或多张图片
- 微信读书电脑版更改字体
- 基于微信小程序的校园二手交易
- 实时传输协议——RTP协议
- 【科普】HDMI vs DisplayPort vs DVI 傻傻分不清楚
热门文章
- Maven学习:依赖管理
- element-UI 弹出外部组件
- Swift编写–仿照Twitter客户端
- VS Code 配置 C/C++ 环境
- 计算机控制电梯报告总结,电梯实训总结范文(共10篇).doc
- Python爬虫抓取携程网机票信息并发邮件通知
- linux 监控丢包 脚本,ping发现掉包报警的shell代码
- 【解决】无法将“XXX”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次
- 常用数据加密和解密方法汇总
- 渗透测试国内外研究_浅析晶硅光伏背板阻隔性能测试(一)——水蒸气透过率测试...