【问题标题】:Getting the correct GMT format using DateFormat Object使用 DateFormat 对象获取正确的 GMT 格式
【发布时间】:2012-02-19 21:50:05
【问题描述】:

如果我有一个File 对象,我怎样才能以这种 GMT 格式获取此文件的lastModified() 日期:Mon, 23 Jun 2011 17:40:23 GMT

例如,当我在文件上调用 java 方法 lastModified() 并使用 DateFormat 对象为 getDateTimeInstance(DateFormat.Long, DateFormat.Long) 并将 TimeZone 设置为 GMT 时,文件日期以不同的格式显示:

File fileE = new File("/Some/Path");
Date fileDate = new Date (fileE.lastModified());
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.Long, DateFormat.Long);
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println("file date " + dateFormat.format(fileDate));

以这种格式打印:

January 26, 2012 7:11:46 PM GMT

我觉得我已经接近上面的格式了,我只是错过了这一天。我必须改用SimpleDateFormat 对象吗?

【问题讨论】:

    标签: java date-format simpledateformat gmt


    【解决方案1】:

    是的,DateFormat 静态实例将特定于区域设置。如果您需要特定格式,则应使用具有适当格式模式的 SimpleDateFormat。

    如果要将 2 个文件修改时间与第二个粒度进行比较,则只需将它们都除以 1000,例如:

    long t1InSeconds = f1.lastModified() / 1000L;
    long t2InSeconds = f2.lastModified() / 1000L;
    
    // which one is sooner
    if(t1InSeconds < t2InSeconds) {
      // f1 is older ...
    }
    

    【讨论】:

    • 我已经尝试通过多种方式使用 simpleDateFormat 来获得上述格式。是否可以获得上述格式的java日期对象?为了澄清,我确信有一种格式可以用来打印日期,但是如果我想将两个日期与第二个粒度进行比较,并且它们需要采用我上面所说的格式。你有例子吗?
    • 日期对象没有格式,它们只是UTC时间的毫秒值。
    【解决方案2】:

    使用SimpleDateFormat,其模式如下:

    DateFormat dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss z");
    

    更新:

    Date d1 = new Date(file1.lastModified());
    Date d2 = new Date(file2.lastModified());
    

    您可以按如下方式进行比较:

    d1.compareTo(d2);
    d1.before(d2);
    d1.after(d2);
    

    为什么要以秒为粒度进行比较?

    如果你想以秒为单位:

    int diffInSeconds = (int) (d1.getTime() - d2.getTime()) / 1000;
    

    【讨论】:

    • 这种格式很棒,可以按照我想要的方式打印我的日期对象。是否可以获取这种格式的日期对象进行比较?
    • 要打印(显示),您可以使用它来格式化 Date 对象,如果您有两个不同的日期(字符串)采用这种格式,则解析和比较(使用 Date.compareTo()、Date. before() 或 Date.after())
    • 确保在您的 SimpleDateFormat 上使用 Locale.US
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-01
    • 2021-11-11
    • 2015-05-28
    相关资源
    最近更新 更多