【问题标题】:The incredible java time machine [duplicate]令人难以置信的Java时间机器[重复]
【发布时间】:2013-06-28 14:31:35
【问题描述】:

使用此示例代码我的时间/日期会发生什么变化??

package date;

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

public class DateFormatTest
{
    public static void main(String args[]) throws ParseException
    {
        final String pattern = "dd/MM/YYYY HH:mm";
        final Locale locale = Locale.FRENCH;
        final SimpleDateFormat formatter = new SimpleDateFormat(pattern, locale);

        Date d = new Date();
        System.out.println("Today: " + d);

        String parsedDate = formatter.format(d);
        System.out.println("Today as string:" + parsedDate);

        Date d2 = formatter.parse(parsedDate);
        System.out.println("Today parsed back:" + d2);

    }
}

输出:

Today: Fri Jun 28 16:28:04 CEST 2013
Today as string:28/06/2013 16:28
Today parsed back:Mon Dec 31 16:28:00 CET 2012    >>> ????

【问题讨论】:

  • 忘记放输出了。刚刚编辑了问题!
  • 没有谜底:我得到当前日期,使用格式化程序将其解析为字符串,然后将此字符串转换回具有相同格式化程序的日期,返回的日期与原始日期不同跨度>
  • YYYY 应该是 yyyy

标签: java date simpledateformat


【解决方案1】:
pattern = "dd/MM/YYYY HH:mm";

应该是

pattern = "dd/MM/yyyy HH:mm";

JavaDoc

但请注意,您发布的这段代码甚至无法在我的 Eclipse 上运行:

java.lang.IllegalArgumentException: Illegal pattern character 'Y'

啊,Y is added in Java 7。但它是weekyear

【讨论】:

  • 根据 OP 的评论:我得到当前日期,使用格式化程序将其解析为字符串,然后将此字符串转换回具有相同格式化程序的日期,返回的日期与原始的 YYYY 在写问题时看起来像是 OP 的错字,这不是真正的问题 =\
  • 太快了!并找到了很好的答案,不过需要等待几分钟才能接受。谢谢!
  • @remi 很高兴我能帮上忙,但老实说,我还没有真正掌握周年的概念。
  • 我仍然不明白为什么解析的回溯日期与原始日期不同。
  • @WilQu 我也没有。我认为这是因为format(Date) 方法是从DateFormat 继承的,并且在SimpleDateFormat 中没有被覆盖,但是在SimpleDateFormat 类中定义的format(Date, StringBuffer, FieldPosition) 方法给出了相同的行为。进一步的解释可能需要深入 JDK 源代码。
【解决方案2】:

解释不多,但只是猜测,如果我错了,请纠正我。

作为explanation of week year,我猜想解析 2013 年的一周年(由于错误的模式 2013 -> YYYY )以某种方式将整个日期设置为 2013 年的第一周,即星期一 31/12/ 2012.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 2019-06-05
    • 1970-01-01
    • 2017-06-29
    • 2013-01-06
    相关资源
    最近更新 更多