【问题标题】:Adding a leading zero to a large string in Java在Java中为大字符串添加前导零
【发布时间】:2013-03-29 12:32:18
【问题描述】:

我目前正在用 Java 制作拍卖程序,我正在尝试制定截止日期,但是我的日期一直显示为 (7/04/2013 11:22),有没有办法使用 String.format 添加当它是一个数字的日子时,这个日期的前导零?

String timeOne = Server.getDateTime(itemArray.get(1).time).toString()

稍后当我尝试对其进行子字符串时,它会导致我出现问题,并且它的长度小于 17 个字符。

提前致谢,詹姆斯。

【问题讨论】:

  • 你能添加你的代码吗?
  • 我猜你正在使用SimpleDateFormat 或类似的东西来格式化日期。如果是这样,请使用正确的格式,即 总是 将天返回为两位数。如果是SimpleDateFormatdd
  • Server.getDateTime()的返回类型是什么?
  • 日期和时间存储在日历项目中。但是,当我从日历对象中获取时间时,它会返回不带前导零的时间。
  • 不要尝试解析日历的toString 表示。来自Javadoc - Return a string representation of this calendar. This method is intended to be used only for debugging purposes, and the format of the returned string may vary between implementations

标签: java eclipse


【解决方案1】:

@Leonard Brünings 的回答是正确的。这就是为什么你的原始代码是错误的方式......即使它有效。

Calendar.toString() 的 javadoc 是这样说的:

"返回此日历的字符串表示形式。此方法仅用于调试目的,返回字符串的格式可能因实现而异。"

基本上,您使用toString() 的目的是javadoc 说您不应该这样做。即使您调整了toString() 的输出,您的代码也很可能很脆弱。 JVM 中的更改可能会破坏它。更改语言环境可能会破坏它。

【讨论】:

    【解决方案2】:

    只需使用 SimpleDateFormat

    import java.text.SimpleDateFormat;
    
    Calendar timeOne = Server.getDateTime(itemArray.get(1).time)
    
    SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm")
    
    System.out.println(sdf.format(timeOne.getTime()))
    

    【讨论】:

    • 我目前正在尝试这样做:networkOutput.println(sdf.format(timeOne));但我收到一个错误:线程“main”中的异常 java.lang.IllegalArgumentException:无法将给定对象格式化为日期
    • 一定要及时调用日历上的getTime(),sdf.format(timeOne.getTime())
    猜你喜欢
    • 2017-08-12
    • 2014-07-13
    • 1970-01-01
    相关资源
    最近更新 更多