SimpleDateFormat 日期格式化,以及SimpleDateFormat.parse

[plain]  view plain copy
  1. 时间日期标识符:  
  2. yyyy:年  
  3. MM:月  
  4. dd:日   
  5. hh:1~12小时制(1-12)  
[plain]  view plain copy
  1. HH:24小时制(0-23)  
  2. mm:分  
  3. ss:秒   
  4. S:毫秒   
  5. E:星期几  
  6. D:一年中的第几天  
  7. F:一月中的第几个星期(会把这个月总共过的天数除以7)  
  8. w:一年中的第几个星期  
  9. W:一月中的第几星期(会根据实际情况来算)  
  10. a:上下午标识  
  11. k:和HH差不多,表示一天24小时制(1-24)。  
  12. K:和hh<span style="font-family: Arial, Helvetica, sans-serif;">差不多</span><span style="font-family: Arial, Helvetica, sans-serif;">,表示一天12小时制(0-11)。</span>  
  13. z:表示时区  

要注意其中的大小写哦,不然会格式化后的日期会很乱的哦!!!

同时没个字母可以写多个,如:yyyyyyyyyyy。根据你的数大小,根据写的字母的长度,在前面补零。

比如:你要把2013 - 08 - 13 15:29:44这个时间格式化成2013 年 08 月 13 日 15 时 29 分 44 秒

一不小心把格式化日期中时间标识符中的大小写搞错了。

[java]  view plain copy
  1. SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时MM分ss秒");  
  2. 写成这样了。最后得到的结果就不对了。  
[java]  view plain copy
  1. 20130814日 150859秒  
[java]  view plain copy
  1. 这个MM这里写的是月份的表示。而分钟的表示则是mm。所以要注意、  

下面是把日期格式话成最全的例子。

[java]  view plain copy
  1. SimpleDateFormat sdf = new SimpleDateFormat("yyyyyyyy-MM-dd HH(hh):mm:ss S E D F w W a k K z");  
  2.         long times = System.currentTimeMillis();  
  3.         System.out.println(times);  
  4.         Date date = new Date(times);  
  5.         String tim = sdf.format(date);  
  6.         System.out.println(tim);  

输出的结果:

[html]  view plain copy
  1. 00002013-08-14 15(03):56:40 742 星期三 226 2 33 3 下午 15 3 CST  


[java]  view plain copy
  1. SimpleDateFormat sdf = new SimpleDateFormat("现在是yyyy年MM月dd日 HH(hh)时   mm分 ss秒 S毫秒   星期E 今年的第D天  这个月的第F星期   今年的第w个星期   这个月的第W个星期  今天的a k1~24制时间 K0-11小时制时间 z时区");  
  2.         long times = System.currentTimeMillis();  
  3.         System.out.println(times);  
  4.         Date date = new Date(times);  
  5.         String tim = sdf.format(date);  
  6.         System.out.println(tim);  

输出结果:

[html]  view plain copy
  1. 现在是2013年08月14日 16(04)时   03分 03秒 812毫秒   星期星期三 今年的第226天  这个月的第2星期   今年的第33个星期   这个月的第3个星期  今天的下午 161~24制时间 40-11小时制时间 CST时区  

标识符表格:

SymbolMeaningPresentationExample
Gera designatorTextAD
yyearNumber2009
Mmonth in yearText & NumberJuly & 07
dday in monthNumber10
hhour in am/pm (1-12)Number12
Hhour in day (0-23)Number0
mminute in hourNumber30
ssecond in minuteNumber55
SmillisecondNumber978
Eday in weekTextTuesday
Dday in yearNumber189
Fday of week in monthNumber2 (2nd Wed in July)
wweek in yearNumber27
Wweek in monthNumber2
aam/pm markerTextPM
khour in day (1-24)Number24
Khour in am/pm (0-11)Number0
ztime zoneTextPacific Standard Time
'escape for textDelimiter(none)
'single quoteLiteral'


simpledateformat的parse默认是弱校验的.

比如说如果你的format为"yyyy-MM-dd" ,输入的字串如果是"2013-08-28"能转化正常.

输入的如果是"2013-13-28"则会生成Date:2014-01-28.也就是顺加.

如果希望把"2013-13-28"当做错误格式.则可以设定setLenient(false);

代码如下

public class DateTest {  
    public static void main(String[] args) throws ParseException {  
        DateFormat format = new SimpleDateFormat("dd/MM/yyyy");  
        format.setLenient(false);  
        Date date = format.parse("33/12/2011");  
        System.out.println(date);  
    }  
} 

输出结果为:

Exception in thread "main" java.text.ParseException: Unparseable date: "33/12/2011" 
at java.text.DateFormat.parse(Unknown Source) 
at DateTest.main(DateTest.java:11)

若设置

format.setLenient(false);

则输出结果为

Mon Jan 02 00:00:00 CST 2012 
setLenient用于设置Calendar是否宽松解析字符串,如果为false,则严格解析;默认为true,宽松解析。










  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值