日期format时,“MM”与“mm”为何不同?

项目中,默认的日期格式为“2009-12-08”,某个页面上时间格式想改为“09.12.08”,这个任务分给了我。 在修改时,遇到这么一个问题:设定pattern时用“MM”跟“mm”不一样。 

 

如下所示: 

 

  • 默认为, <fmt:formatDate value="${conStream.appplyDate}" pattern="yyyy-MM-dd"/>, 结果是“2009-12-08”. 
  • 用“mm”时, <fmt:formatDate value="${conStream.appplyDate}" pattern="yy.mm.dd"/>, 结果是“2009-00-08”!
  • 用“MM”时, <fmt:formatDate value="${conStream.appplyDate}" pattern="yy.MM.dd"/>   结果是“09.12.03”, 8错!

 

 

那么为什么会这样呢? 

 

自己用java.text.SimpleDateFormat类做了如下实验: 

 

public static void main(String[] args) {
		java.util.Date today = new java.util.Date();
		
		java.text.SimpleDateFormat df;
        String returnValue = "";

        df = new java.text.SimpleDateFormat("yy.mm.dd");
        returnValue = df.format(today);          
        System.out.println(returnValue);  // 09.27.21, 09.33.21, 09.34.21, 注意这个值, 运行了三次,三次输出的结果不同。    


        df.applyPattern("yy.MM.dd");
        System.out.println(df.format(today)); // 09.12.21
}
  更奇怪的问题出现了, 运行了三次,“ mm ”生成结果还不一样。

 

谁能来搞定这个“mm”呢?为什么用“mm”结果不对,且每运行一次结果有变?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值