【问题标题】:Space instead of leading 0 Date Java空格而不是前导 0 日期 Java
【发布时间】:2015-08-04 10:07:33
【问题描述】:
    SimpleDateFormat sdf = new SimpleDateFormat("MMM dd HH:mm:ss"); 
    System.out.println(sdf.format(new Date()));
    SimpleDateFormat sdff = new SimpleDateFormat("MMM d HH:mm:ss"); 
    System.out.println(sdff.format(new Date()));

输出是:

    Aug 04 10:58:55
    Aug 4 10:58:55

我希望输出是:

    Aug 04 10:58:55
    Aug  4 10:58:55

有什么想法吗?

但是如果一天有两个数字,我需要它有一个空格:

    Aug 14 10:58:55
    Aug  4 10:58:55

【问题讨论】:

  • 当前输出与您的预期相同...所以没问题..如果您担心对齐问题,那只是格式问题。
  • @RuchiraGayanRanaweera Kami 正在日期格式化程序中寻找一些“空白填充”。仔细看看。
  • 我不需要Aug 4,得到Aug 4,一个空格而不是两个。 @dotvav 如果有两个数字,它不会留两个空格吗?

标签: java date formatting


【解决方案1】:

如果您对空白感到烦恼,只需在格式化程序中添加一个空白即可。

"MMM  d HH:mm:ss"

例如:

Calendar calendar=Calendar.getInstance();
int day=calendar.get(Calendar.DAY_OF_MONTH);
SimpleDateFormat sdf;
if(day>9){
  sdf = new SimpleDateFormat("MMM dd HH:mm:ss");
}else{
  sdf = new SimpleDateFormat("MMM  d HH:mm:ss");
}
System.out.println(sdf.format(new Date()));

输出:

Aug  4 15:50:25

【讨论】:

  • 如果一天中有两个数字,则不会工作,所以它将是Aug 11,而我需要Aug 11。格式不显示它让我编辑我的问题。
  • 我看到了你的编辑,聪明,不知道我怎么没想到的。
  • @Ruchira,现在您正在使用已弃用的 API。我宁愿有其他选择而不是使用它们。
  • @Codebender 是的。您可以使用Calendar 作为我的编辑。
  • 修复你的输出,我会接受这个答案。
【解决方案2】:

查看SimpleDateFormat类的这个方法:

public StringBuffer format(Date date, StringBuffer toAppendTo,
                               FieldPosition pos) { ...}

并提供自定义的FieldPosition 实现。

【讨论】:

  • 您有任何链接可以解释FieldPosition 的工作原理吗?我一直觉得很难理解。
  • 不幸的是,没有。如果有人找到它并在这里发帖会很高兴。
【解决方案3】:

AFAIK 在SimpleDateFormat 中没有这样做的模式。

最简单的方法就是最简单的。检查字符串长度并在需要时添加额外的空格。由于所有其他项目的长度都是固定的,因此无需进行更复杂的检查。

SimpleDateFormat sdff = new SimpleDateFormat("MMM d HH:mm:ss");
if (sdff.length == 14) {
   sdff = sdff.substring(0,4) + " " + sdff.substring(4);
}

如果你想要它花哨(又名 RegExp),它会更强大一些,但不值得 IMO 努力

SimpleDateFormat sdff = new SimpleDateFormat("MMM d HH:mm:ss");
sdff = sdff.replaceAll(" (\\d) ", "  $1 ");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 2018-03-28
    • 2015-09-18
    • 2010-10-28
    相关资源
    最近更新 更多