日期格式表现特殊

时间:2018-01-31 00:48:38

标签: java datetime simpledateformat date-format date-formatting

我们有一个遗留系统,他们将生成当前日期,然后将其设置为excel的标题。

简化逻辑部分中的java代码

有时对于这个程序,我会以一种特殊的形式获得标题输出

作为示例场景,我的代码应该生成一个14个字符的标题,如20170529121599,但有时会产生一个15个字符的标题,如201705291215992

预期:20170529121599 输出:201705291215992

为什么我会在极少数情况下获得额外的角色? 这种情况很少发生,当发生这种情况时,这个额外的字符会导致下游系统失败。

修复:我们可以通过计划额外的章程来解决这个问题,但我真的想知道这背后的原因,以便它有助​​于修复类似的问题。

有人可以帮我这个吗?

import java.text.DateFormatSymbols;    
import java.text.SimpleDateFormat;   
import java.util.Date;   
import java.util.Locale;  

public class TestDateGeneration {   
  public static void main(String args[]) {
    DateFormatSymbols symbols;   
    SimpleDateFormat formatter;    
    symbols = new DateFormatSymbols(new Locale("en", "US"));    
    formatter = new SimpleDateFormat("E", symbols);    
    java.util.Date todayDate = new java.util.Date();

    String header = "";   
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");  
    String formatedDate = dateFormat.format(todayDate);    
    header = formatedDate+"\t";   

    System.out.println("output header " +header);
  }
}

1 个答案:

答案 0 :(得分:1)

除了难以阅读之外,你的代码还没有产生你的输出(提示:包括" formatedDate"在你的println()调用中)。实际的失败测试可能会得到更好的答案。

因此,如果我猜测为什么它没有做你想要的,我猜你的格式实际上是" yyyyMMddHHmmSS"。大写S表示毫秒(与报告的输出显示的一致)。请注意" 99"在一分钟内的秒数无效,但" 990"和" 992"都是有效的毫秒。