【问题标题】:Jodatime not using 0 prefixes for Days and Months? JavaJodatime 不使用 0 前缀表示日期和月份?爪哇
【发布时间】:2013-11-08 21:39:58
【问题描述】:

全部,

我创建了一个函数来从 Joda DateTime 对象创建日期字符串。

    public static String getDateString(DateTime dT)
{
    String dateString = dT.getDayOfMonth() + "-";
    dateString = dateString + dT.getMonthOfYear() + "-";
    dateString = dateString + dT.getYear() + " ";
    dateString = dateString + dT.getHourOfDay() + ":";
    dateString = dateString + dT.getMinuteOfHour() + ":" + dT.getSecondOfMinute();
    logger.finer("Date String is : " + dateString);
    return dateString;
}

问题是几天和几个月前有一个零,例如10 月 8 日,正在打印为

2013 年 8 月 11 日 12:51:49

当我下次按预期执行程序时读取此值时,这会破坏我的格式

我需要明确的格式 DD-MM-YYYY

正确输出如下

08-11-2013 12:51:49

谢谢

【问题讨论】:

    标签: java jodatime


    【解决方案1】:

    您可以通过将日期格式传递给 toString() 方法来直接访问 DateTimeFormatter。

    String dateString = dT.toString("dd-MM-yyyy HH:mm:ss");
    

    【讨论】:

      【解决方案2】:

      您可以使用DateTimeFormatter 而不是自己执行此操作,例如:

      final DateTimeFormatter formatter = DateTimeFormat.forPattern("dd-MM-yyyy HH:mm:ss");
      final String dateString = formatter.print(dT);
      

      这也将解决您遇到的0-prefix 问题。

      【讨论】:

      • 哇,这让我的生活变得如此轻松!
      • 没问题!对于额外的奖励积分,将格式化程序定义为 private static final 成员变量以供重用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      • 2020-01-29
      • 1970-01-01
      • 1970-01-01
      • 2012-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多