标签:
官方提供了非常丰富的日期处理的API,比我下面所涉及的多得多,但实际开发中用到的只是其中部分,且基本能满足实际开发需要。
日期处理最关键的类是Calendar,负责日期的各种操作,再通过SimpleDateFormat类就可以实现日期和字符串之间的相互转换。
日期格式
日期格式的表示方式,主要在日期格式转换的时候用到(比如日期转换为字符串),这些符号的顺序并不是固定的,可以根据需要改变
比如我要显示"16-08-2016 13:50:33",这时就是dd-MM-yyyy HH:mm:ss,具体使用方式见下面的日期和字符串的转换
yyyy MM dd HH mm ss E a
y:年份,一般四位,也可以写两个yy,这样就只显示年份后两位
M:月份,一般两位,可以写一个,但月份为个位数时显示个位(前面不会补0),月份两位数时会强制显示两位(比如11月份)
d:日期,一个月中的第几天
H:小时,大写的H使用的24小时制,如果是h,则为12小时制
m:分钟
s:秒
E:星期
a:上下午
Calendar
Calendar的常见API如下
// 获取一个实例 Calendar c = Calendar.getInstance(); // 设置年份 c.set(Calendar.YEAR, 2013); // 设置月份,第二个参数可以是具体数字,但是注意月份的下标是从0开始的,0代表1月份,1代表2月份,以此类推 c.set(Calendar.MONTH, 03); // 设置天数 c.set(Calendar.DAY_OF_MONTH, 18); // 获取年份 int year = c.get(Calendar.YEAR); // 获取月份,获取的是月的数值,从0开始,故需要+1 int month = c.get(Calendar.MONTH) + 1; // 获取天数 int day = c.get(Calendar.DAY_OF_MONTH); // 当前月份最大天数 c.getActualMaximum(Calendar.DAY_OF_MONTH); // 修改年份,第二个参数为负表示减少 c.add(Calendar.YEAR, 2); // 修改月份 c.add(Calendar.MONTH, 2); // 修改天数 c.add(Calendar.DAY_OF_MONTH, 2); // 转换成世界通时 Date date = c.getTime();
其他API
Date date = new Date(); // 获取当前系统时间
long l = date.getTime(); // 与1970年元旦的毫秒差
DateFormat df = DateFormat.getDateInstance(int style, Locale locale); // 获取一个日期格式化实例,可以选择不同的时区
style: 格式化后日期的格式,有DateFormat.LONG, DateFormat.MEDIUM或DateFormat.SHORT
locale: 所在时区,比如中国为Locale.CHINA,美国为Locale.US
System.currentTimeMillis(); // 获取当前系统毫秒数,与1970年元旦之差
System.nanoTime(); // 获取纳秒值时间,一般用于计算程序执行时间差,并非与1970的时间差
字符串转日期
String timeStr = "2016-08-24 12:30:56"; // 时间字符串
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 日期格式和timeStr的格式一致才能转换,否则报错
Date date = sf.parse(timeStr); // 转换成Date
Calendar c = Calendar.getInstance(); // 获取一个日历的实例
c.setTime(date); // 设置为该时间
// 修改日期操作,详见上面Calendar的API
日期转字符串
Date date = new Date(); // 将当前系统时间转换为格式为yyyy-MM-dd HH:mm:ss的字符串
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 格式化实例
String time = sf.format(date); // 格式化
标签:
原文地址:http://www.cnblogs.com/windyrain/p/5778152.html