Java中常见的日期处理方法
在实际工作中日期是我们非常用的一种类型,其原因相信不用我说了大家都明白,今天就写一篇文章记录一下自己在工作中常用的日期处理
1. 日期格式化
日期格式化,在工作中,很多时候我们拿到的日期的格式不是我们想要的,那么就需要我们把它格式化成我们想要的,那么怎么做呢?
举个例子:我们想格式化当日时间为:2015-05-31 22:05:30,就可以这么做:
package cn.bridgeli.demo.date; import java.text.SimpleDateFormat; import java.util.Date; public class DateTest { public void testSimpleDateFormat() { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); String now = simpleDateFormat.format(date); System.out.println(now); } }
那么大家就可以根据自己的需要,去格式化大家想要的格式了,需要注意的一点是:我这里的“HH”是大写的表明是24时计时法,如果写成小写的“hh”,就变成12时计时法了。
2. 获取当前的月份
我想有些人可能已经想到了,把上面的改成
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM");
这个是能达到目的,但不够优雅,也不是官方所推荐的,也比较难以维护,下面我们看看标准的实现
package cn.bridgeli.demo.date; import java.util.Calendar; import java.util.Date; public class DateTest { public void testSimpleDateFormat() { Calendar calendar = Calendar.getInstance(); System.out.println(calendar.get(Calendar.MONTH)); } }
其实在JDK的早期版本中,Date类型是直接有genMonth()方法的,但由于Date类型比较简单,功能有限,所以后来JDK就把这个方法给废弃了(但为了兼容,目前还是可以用的),然后创造了Calendar,所以我们可以利用Calendar获取年份、月份、日期等等,具体可以查询JDK的API
3. 获得当前周几
这个其实和上一个很类似,具体不多说了,大家查JDK的API中的Calendar就可以看到了
package cn.bridgeli.demo.date; import java.util.Calendar; import java.util.Date; public class DateTest { public static void main(String[] args) { Date today = new Date(); Calendar c = Calendar.getInstance(); c.setTime(today); int weekday = c.get(Calendar.DAY_OF_WEEK); System.out.println(weekday); } }
4. 当前日期加一天
有时候我们,不仅需要当前时间,而且需要当前时间往前推或者往后推,这个时候我们就可以这么做:
package cn.bridgeli.demo.date; import java.util.Calendar; import java.util.Date; public class DateTest { public static void main(String[] args) { Date date = new Date(); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DATE, 1);// 把日期往后增加一天.整数往后推,负数往前移动 date = calendar.getTime(); // 这个时间就是日期往后推一天的结果 System.out.println(date); } }
5. 读取配置文件中的某一时间
因为无论new Date()还是Calendar.getInstance()获取的都是系统当前时间,但有时候我们从配置文件或者数据库中读取到了时间,我们怎么把它放到一个对象中呢,那么我们可以这么做:
package cn.bridgeli.demo.date; import java.util.Calendar; import java.util.Date; public class DateTest { public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); Date date = XXX; calendar.setTime(date); } }
注意例子因为是随便写的,所以就写了一个XXX
6. 获取其他时区的时间
例如获取日本时区的时间,可以这么做:
package cn.bridgeli.demo.date; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.TimeZone; public class DateTest { public static void main(String[] args) { Calendar cJapen = new GregorianCalendar(TimeZone.getTimeZone("Japan")); System.out.println(cJapen.get(Calendar.HOUR_OF_DAY)); } }
7. 字符串转日期
有时候我们获取到的是一个字符串,需要转成时间,那么我们可以这么处理
package cn.bridgeli.demo.date; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateTest { public static void main(String[] args) { String str = "2015-05-31 23:03:30"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { Date date = sdf.parse(str); System.out.println(date); } catch (ParseException e) { e.printStackTrace(); } } }
这些都是一些常见的关于日期的处理,相信大家看完这篇文章,再加上JDK的API文档,一定可以处理好工作中所有遇到的关于时间的处理问题
作 者: BridgeLi,https://www.bridgeli.cn
原文链接:http://www.bridgeli.cn/archives/181
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。
近期评论