Java中的时间格式转换:
声明:
parse方法是将时间字符串转换成时间对象;format方法是将时间对象转换成时间字符串;
时间字符串一般有以下几种:
一般样式: "yyyy-MM-dd HH:mm:ss"、"yyyy年MM月dd日 HH时mm分ss秒" 带有时区样式: "yyyy-MM-dd'T'HH:mm:ss'Z'" 系统默认样式: "EEE MMM dd HH:mm:ss z yyyy"其中默认样式转换时,需要多加一个参数new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy",Locale.ENGLISH)
new出来的Date是没有格式的,输出的时候是调用了其toString的方法,格式如下:
Date now=new Date(); System.out.println(now);
Wed May 23 23:05:01 CST 2018
- 将时间对象转换为固定的时间字符串(对象与字符串的转换需要使用SimpleDateFormat)
Date now = new Date(); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(sdf.format(now));
2018-05-23 23:09:25
- 将时间字符串转换成时间对象
String dateStr="2018/05/23 23:09:25"; SimpleDateFormat sdf1=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Date date=sdf1.parse(dateStr); System.out.println(date);
Wed May 23 23:09:25 CST 2018
这时候的date则按照默认的格式输出了,所以date对象则是从时间字符串对象转换成了时间对象
- 从某种格式时间字符串(yyyy-MM-dd'T'HH:mm:ss'Z')到指定格式时间字符串(yyyy/MM/dd HH:mm:ss)
String dateStr2="2017-01-22T17:33:18Z"; SimpleDateFormat sdf1=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); System.out.println(sdf1.format(sdf2.parse(dateStr2)));
2017/01/22 17:33:18
- 毫秒数转换成时间对象
long time=System.currentTimeMillis(); System.out.println("time:"+time); Date date=new Date(time); System.out.println("date:"+date);
time:1527089133265 date:Wed May 23 23:25:33 CST 2018
上面的时间按照固定的时间字符串格式输出了,所以转换成功。
扫描二维码关注公众号,回复:
1145074 查看本文章
- 时间对象获取毫秒数
Date date1=new Date(); System.out.println("time:"+date1.getTime());
time:1527089276078
Java中的时间操作:
获取时间中年、月、日等属性或者已有时间上增加一年、减少一天等亦或通过两个时间计算相关值,用Calendar最好。
- 获取时间的某个属性
Calendar now = Calendar.getInstance(); System.out.println("年: " + now.get(Calendar.YEAR)); System.out.println("月: " + (now.get(Calendar.MONTH) + 1) + ""); System.out.println("日: " + now.get(Calendar.DAY_OF_MONTH)); System.out.println("时: " + now.get(Calendar.HOUR_OF_DAY)); System.out.println("分: " + now.get(Calendar.MINUTE)); System.out.println("秒: " + now.get(Calendar.SECOND));
年: 2018 月: 5 日: 24 时: 23 分: 24 秒: 45
- 已有时间上增加或减少时间
Calendar now = Calendar.getInstance(); System.out.println("原时间:"+now.getTime()); now.add(Calendar.YEAR, 1); System.out.println("上个时间加一年时间:"+now.getTime()); now.add(Calendar.DAY_OF_MONTH, -1); System.out.println("上个时间减一天时间:"+now.getTime());
原时间:Thu May 24 22:59:43 CST 2018 上个时间加一年时间:Fri May 24 22:59:43 CST 2019 上个时间减一天时间:Thu May 23 22:59:43 CST 2019
- 通过时间计算年龄
//计算年龄方法 public static String getAge(Date birthDay,Date EndDay) throws Exception { Calendar cal = Calendar.getInstance(); //设置到哪天计算出年龄 cal.setTime(EndDay); if (cal.before(birthDay)) { throw new IllegalArgumentException( "The birthDay is before Now.It's unbelievable!"); } int yearNow = cal.get(Calendar.YEAR); int monthNow = cal.get(Calendar.MONTH); int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH); //设置出生日期 cal.setTime(birthDay); int yearBirth = cal.get(Calendar.YEAR); int monthBirth = cal.get(Calendar.MONTH); int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH); int age = yearNow - yearBirth; if (monthNow <= monthBirth) { if (monthNow == monthBirth) { if (dayOfMonthNow < dayOfMonthBirth) age--; }else{ age--; } } return Integer.toString(age); }
System.out.println("今年的年龄:"+getAge(new SimpleDateFormat("yyyy-MM-dd").parse("1999-09-09"), new Date())); System.out.println("2022年的年龄:"+getAge(new SimpleDateFormat("yyyy-MM-dd").parse("1999-09-09"), new SimpleDateFormat("yyyy-MM-dd").parse("2022-01-01")));
今年的年龄:18 2022年的年龄:22
Oracle中的时间格式转换:
- 时间对象转时间字符串
select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual;
- 时间字符串转时间对象
select to_date('2022-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;
Oracle中的时间操作:
- 获取时间的某个属性
select to_char(sysdate,'yyyy') as year,to_char(sysdate,'mm') as month,to_char(sysdate,'dd') as nowDay from dual;
加法 select sysdate,add_months(sysdate,12) from dual; --加1年 select sysdate,add_months(sysdate,1) from dual; --加1月 select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual; --加1星期 select sysdate,to_char(sysdate+1,'yyyy-mm-dd HH24:MI:SS') from dual; --加1天 select sysdate,to_char(sysdate+1/24,'yyyy-mm-dd HH24:MI:SS') from dual; --加1小时 select sysdate,to_char(sysdate+1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual; --加1分钟 select sysdate,to_char(sysdate+1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual; --加1秒 减法 select sysdate,add_months(sysdate,-12) from dual; --减1年 select sysdate,add_months(sysdate,-1) from dual; --减1月 select sysdate,to_char(sysdate-7,'yyyy-mm-dd HH24:MI:SS') from dual; --减1星期 select sysdate,to_char(sysdate-1,'yyyy-mm-dd HH24:MI:SS') from dual; --减1天 select sysdate,to_char(sysdate-1/24,'yyyy-mm-dd HH24:MI:SS') from dual; --减1小时 select sysdate,to_char(sysdate-1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual; --减1分钟 select sysdate,to_char(sysdate-1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual; --减1秒