Java中时间格式化及相关操作
2015-11-24 13:04
405 查看
Java中对时间的使用,是很频繁的。也经常会忘,记录一下,以备不时之需……从需求入手:
时间获取和格式化相关
时间的加减和比较大小相关
日期的格式化,主要用到的如下几个类
java.lang.Object
|
+—-java.text.Format
|
+—-java.text.DateFormat
|
+—-java.text.SimpleDateFormat
日期的类 java.util.Date
日历的抽象类 java.util.Calendar
日历的直接子类java.util.GregorianCalendar
备注:
年, 月, 日, 时, 分, 秒, 毫秒
yyyy, MM, dd, HH, mm, ss, SSS
推荐两个工具:
joda-Time 和 jdatetime
这两个工具,较jdk操作时间的方法,更方便了些!
时间获取和格式化相关
//获取当前日期对象 Date nowDate = new Date(); //有了date对象,就可以单独获取,年、月、日、这些信息了。 //这些方法除了nowDate.getTime()外,其它的都不建议使用了。 int d1 = nowDate.getDate(); int d2 = nowDate.getDay(); int d3 = nowDate.getHours(); int d4 = nowDate.getMinutes(); int d5 = nowDate.getMonth(); long d6 = nowDate.getTime(); int d7 = nowDate.getYear(); //获取当前时间并转为字符串 Fri Dec 26 09:51:35 CST 2014 //当然,这些内容一般不是我们想看到的 String d8 = new Date().toString(); //获取当前时间 格式为2014.11.12 13:14:15,这才是我们想看到的类型 DateFormat dateFormat1 = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss:SSS"); String d9 = dateFormat1.format(new Date()); //把格式为2014-11-12 13:14:15的字符串日期,变成date对象 DateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String stringObj = "2014-11-12 13:14:15"; Date dateObj = dateFormat2.parse(stringObj); //nowDate.getTime(),从1970年1月1日0:0:0开始到当前时间, long haomiao1 = nowDate.getTime(); //Date newDateObj2 = haomiao1/(365 * 24 * 60 * 60); //另外long型的毫秒转日期,比较老土的方式 Date newDateObj1 = new Date(haomiao1); //怎样获取当前的,年月日时分秒呢?用这个类 Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1 ; //当前月 需要加1 int date = calendar.get(Calendar.DATE); int hour = calendar.get(calendar.HOUR_OF_DAY); //假如说下午3点,会显示15 int hour2 = calendar.get(calendar.HOUR); //假如说下午3点,会显示3 int minute = calendar.get(calendar.MINUTE); int second = calendar.get(calendar.SECOND); int millisecond = calendar.get(Calendar.MILLISECOND); //Calendar.DAY_OF_YEAR //当前年中的第几天 //Calendar.DAY_OF_MONTH //当前月的第几天 //Calendar.DAY_OF_WEEK //当前星期的第几天 //Calendar.WEEK_OF_MONTH //当前月的第几个星期 //Calendar.WEEK_OF_YEAR //当前年的第几个星期 System.out.println(year + "/" + month + "/" + date + " " +hour + ":" +minute + ":" + second + " " + millisecond + " " + hour2); System.out.println("d1: " + d1); System.out.println("d2: " + d2); System.out.println("d3: " + d3); System.out.println("d4: " + d4); System.out.println("d5: " + d5); System.out.println("d6: " + d6); System.out.println("d7: " + d7); System.out.println("d8: " + d8); System.out.println("d9: " + d9); System.out.println("d10: " + System.currentTimeMillis());//1419559281845 System.out.println("d11: " + new Date().getTime()); //1419559281845
时间的加减和比较大小相关
//日期比较大小 //把两个日期,都转成毫秒值相减 String stringDate1 = "2014-11-12"; String stringDate2 = "2014-12-13"; DateFormat dateFormat3 = new SimpleDateFormat("yyyy-MM-dd"); long longDate1 = dateFormat3.parse(stringDate1).getTime(); long longDate2 = dateFormat3.parse(stringDate2).getTime(); if (longDate1 - longDate2 > 0) { System.err.println("longDate1 大于 longDate2"); }else { System.err.println("longDate2 大于 longDate1"); } //这个操作,还可以求出,两个日期之间,差出了多少天,或者小时,或者分钟,或者秒,或毫秒 long result = (longDate1 - longDate2)/(1000 * 60 * 60 * 24); //把两个日期字符串,都转成日期对象 String datea = "2014-11-12"; String dateb = "2014-12-13"; DateFormat dateFormat6 = new SimpleDateFormat("yyyy-MM-dd"); Date obj6 = dateFormat6.parse(datea); Date obj7 = dateFormat6.parse(dateb); System.out.println(obj6.before(obj7)); //true System.out.println(obj6.after(obj7)); //false System.out.println(obj6.compareTo(obj7)); //-1 //在当前日期上加上3天,是几月几号呢 Calendar calendar2 = Calendar.getInstance(); calendar2.add(Calendar.DATE, 3);//减去三天,之间把3改成-3就行 //在指定日期上加上3天,是几月几号呢 String stringDate4 = "2014-11-12"; DateFormat dateFormat4 = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar4 = new GregorianCalendar(); calendar4.setTime(dateFormat4.parse(stringDate4)); calendar4.add(Calendar.DATE, 3); System.out.println(dateFormat4.format(calendar4.getTime()));//calendar转为date对象,再转为string //calendar对象,转成date对象 Date dateObj2 = calendar2.getTime(); //date对象转成calendar对象 Calendar calendar5 = Calendar.getInstance(); calendar5.setTime(new Date());
日期的格式化,主要用到的如下几个类
java.lang.Object
|
+—-java.text.Format
|
+—-java.text.DateFormat
|
+—-java.text.SimpleDateFormat
日期的类 java.util.Date
日历的抽象类 java.util.Calendar
日历的直接子类java.util.GregorianCalendar
备注:
字母 | 日期或时间元素 | 表示 | 示例 |
G | Era 标志符 | Text | AD |
y | 年 | Year | 1996; 96 |
M | 年中的月份 | Month | July; Jul; 07 |
w | 年中的周数 | Number | 27 |
W | 月份中的周数 | Number | 2 |
D | 年中的天数 | Number | 189 |
d | 月份中的天数 | Number | 10 |
F | 月份中的星期 | Number | 2 |
E | 星期中的天数 | Text | Tuesday; Tue |
a | Am/pm 标记 | Text | PM |
H | 一天中的小时数(0-23) | Number | 0 |
k | 一天中的小时数(1-24) | Number | 24 |
K | am/pm 中的小时数(0-11) | Number | 0 |
h | am/pm 中的小时数(1-12) | Number | 12 |
m | 小时中的分钟数 | Number | 30 |
s | 分钟中的秒数 | Number | 55 |
S | 毫秒数 | Number | 978 |
z | 时区 | General time zone | Pacific Standard Time; PST; GMT-08:00 |
Z | 时区 | RFC 822 time zone | -800 |
yyyy, MM, dd, HH, mm, ss, SSS
推荐两个工具:
joda-Time 和 jdatetime
这两个工具,较jdk操作时间的方法,更方便了些!
相关文章推荐
- java生产者消费者模式代码示例
- Eclipse中修改SVN用户名和密码方法
- Google Java编程风格指南中文版
- springMVC ajax 后台获取不到对象属性
- 【JAVA大作业开发记录(五)】
- Java装饰者模式
- Struts之参数传递
- 鼠标移动监听的注意事项
- 获取显示器的宽高
- 【Hibernate】hibernate的二级缓存(spring)
- java匿名内部类
- 【Java基础】JPA入门例子(采用JPA的hibernate实现版本)
- Gradle入门系列(2):第一个Java项目
- java开发必读 书单
- javabean和map相互转换工具类
- 13、Java反射
- java 前7天
- SpringMVC路径包括小数点出现问题的解决方法
- 12、Java网路编程socket
- junit测试配置log4j