SimpleDateFormat日期格式转换
来源:互联网 发布:办公软件有哪些 编辑:程序博客网 时间:2024/05/22 08:28
在08年的项目中经常遇到Calendar(日历)的转化错误,这个错误在Windows环境中不会抛错,将项目部署到Linux中就会抛异常导致功能无法使用,这里做一个总结。
1 Java.util.Date(这里讲String类型转date类型)
包含年、月、日、时、分、秒信息。
格式:Wed Jun 07 15:26:34 CST 2017
问题:
在项目中我发现经常有Date currentDate= new Date();,之后又定义了一个SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");最后在格式化Date date = DateFormat.getDateTimeInstance().parse(sdf.format(currentDate));结果Linux中就抛错了。
其实我将这个问题演练总结了一个,发现格式化是多余的,因为格式化后与新new出来的date格式是一样的,最终要的就是date格式,多此一举了。
@Testpublic void calendar(){Date currentDate= new Date();//输出:Wed Jun 07 15:40:14 CST 2017System.out.println(currentDate);try {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date = DateFormat.getDateTimeInstance().parse(sdf.format(currentDate));System.out.println(date);//输出:Wed Jun 07 15:40:14 CST 2017} catch (ParseException e) {e.printStackTrace();}}
正文:在项目中经常会从前端传过来String类型的格式的日期,这个时候需要我们后台接收后进行转换一下。
一、String————>Date
1)带有时分秒的(年月日时分秒)
@Testpublic void calendar(){// String转换为Date String dateStr="2017-06-07 23:23:23"; String pattern="yyyy-MM-dd HH:mm:ss"; SimpleDateFormat dateFormat=new SimpleDateFormat(pattern); try {Date date=dateFormat.parse(dateStr);System.out.println(date);//输出:Wed Jun 07 23:23:23 CST 2017} catch (ParseException e) {e.printStackTrace();} }其中:String pattern="yyyy-MM-dd HH:mm:ss";
SimpleDateFormat dateFormat=new SimpleDateFormat(pattern);
可以合并成:SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
2)不带时分秒的(仅有年月日的)
@Testpublic void calendar(){// String转换为Date String dateString = "2017-06-07 "; try{ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd "); Date date = sdf.parse(dateString); System.out.println(date);//输出:Wed Jun 07 00:00:00 CST 2017}catch (ParseException e){ e.getMessage(); } }
3)将带有时分秒的String 格式化成不带时分秒的Date
@Testpublic void calendar3(){// String转换为Date String dateStr="2017-06-07 23:23:23"; String pattern="yyyy-MM-dd"; SimpleDateFormat dateFormat=new SimpleDateFormat(pattern); try {Date date=dateFormat.parse(dateStr);System.out.println(date);//输出:Wed Jun 07 00:00:00 CST 2017} catch (ParseException e) {e.printStackTrace();} }
考虑:若只转换时分秒呢?答案是从1970年开始的年份加秒数
@Testpublic void calendar(){// String转换为Date String dateString = "23:24:59"; try{ SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); Date date = sdf.parse(dateString); System.out.println(date);//输出:Thu Jan 01 23:24:59 CST 1970}catch (ParseException e){ e.getMessage(); } }
二、Date转String
Date——>String
@Testpublic void calendar(){// Date 转换为String Date ddate = new Date();//从数据库取出来的也一样String sdate=(new SimpleDateFormat("yyyy-MM-dd")).format(ddate); System.out.println(sdate);//2017-06-07 16:14:17}
@Testpublic void calendar3(){// Date 转换为String Date ddate = new Date();String sdate=(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(ddate); System.out.println(sdate);//2017-06-07 16:14:17// String转换为Date String pattern="yyyy-MM-dd"; SimpleDateFormat dateFormat=new SimpleDateFormat(pattern); try {Date date=dateFormat.parse(sdate);System.out.println(date);//输出:Wed Jun 07 00:00:00 CST 2017} catch (ParseException e) {e.printStackTrace();} }也可以先将Date转成不带时分秒的String 在将String转成不带时分秒的date,这里就不做演示了
2 Java.sql.Date(略)
包含年、月、日信息。
继承自Java.util.Date。在数据库相关操作中使用,如rs.getDate,ps.setDate等。rs是指ResultSet,ps是指PreparedStatement。
// java.util.Date转换为java.sql.Date new java.sql.Date(utilDate.getTime());// 其中utilDate为java.util.Date类型的对象
3 Java.util.Calendar
包含年、月、日、时、分、秒、毫秒信息。
JDK1.1引入,用以代替java.util.Date。
一、Date类型转换成Calendar
Date——>Calendar
1)带时分秒的格式
@Testpublic void calendar(){// Date转为Calendar Date date=new Date(); Calendar calendar=Calendar.getInstance(); calendar.setTime(date); System.out.println(calendar);}
打印输出的格式为:java.util.GregorianCalendar[time=1496823744368,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=2017,MONTH=5,WEEK_OF_YEAR=23,WEEK_OF_MONTH=2,DAY_OF_MONTH=7,DAY_OF_YEAR=158,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=4,HOUR_OF_DAY=16,MINUTE=22,SECOND=24,MILLISECOND=368,ZONE_OFFSET=28800000,DST_OFFSET=0]此时只需要将claendar对象传递给调用者就可。
2)不带时分秒的格式
@Testpublic void calendar3(){// Date 转换为String Date ddate = new Date();String sdate=(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(ddate); System.out.println(sdate);//2017-06-07 16:14:17// String转换为Date Date date = null;SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd"); try {date=dateFormat.parse(sdate);System.out.println(date);//输出:Wed Jun 07 00:00:00 CST 2017} catch (ParseException e) {e.printStackTrace();} Calendar calendar=Calendar.getInstance(); calendar.setTime(date); System.out.println(calendar);}其中calendar的输出是:java.util.GregorianCalendar[time=1496764800000,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=2017,MONTH=5,WEEK_OF_YEAR=23,WEEK_OF_MONTH=2,DAY_OF_MONTH=7,DAY_OF_YEAR=158,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=28800000,DST_OFFSET=0]
若:从数据库中取出来的date本身就不带时分秒的话会跟简单,将上边的date转换去掉即可,原理同带时分秒的转换。
二、calendar 转date
@Testpublic void calendar3(){Date date = new Date();//date 转calendarCalendar calendar = Calendar.getInstance();calendar.setTime(date);System.out.println(calendar);//得到calendar 转 dateDate ddate=calendar.getTime();System.out.println(ddate);}calendar 转String可以借助date类型进行相互转换。
其它时间格式的转换现在不介绍,如有需求后期在补充。
- simpleDateFormat日期格式转换
- SimpleDateFormat 日期格式转换
- SimpleDateFormat日期格式转换
- simpleDateFormat日期格式转换
- SimpleDateFormat日期格式转换
- Java日期转换SimpleDateFormat格式大全
- Java日期转换SimpleDateFormat格式大全
- Java日期转换SimpleDateFormat格式大全
- Java日期转换SimpleDateFormat格式大全
- Java日期转换SimpleDateFormat格式大全
- Java日期转换SimpleDateFormat时间格式
- Java日期转换SimpleDateFormat格式大全
- Java日期转换SimpleDateFormat格式大全
- Java日期转换SimpleDateFormat格式大全
- Java日期转换SimpleDateFormat格式大全
- Java日期转换SimpleDateFormat格式大全
- Java日期转换SimpleDateFormat格式大全
- Java日期转换SimpleDateFormat格式大全
- OpenCV鼠标画图例程,鼠标绘制矩形
- centos7常用操作----不定时更新
- 查看JVM中的线程
- 最近收集的一些RXjava的操作符
- 结构体的使用
- SimpleDateFormat日期格式转换
- 单位和值
- adb push
- 集群项目session 共享方案
- 自定义Java线程池
- JAVA局部变量加final修饰的好处
- spring-boot起步介绍Demo,廖师兄springboot学习笔记
- oracle添加栏位
- 原型模式