代码之家  ›  专栏  ›  技术社区  ›  Computered

Instant.now等效于java.util.Date或java 7

  •  1
  • Computered  · 技术社区  · 6 年前

    我有一个使用Java7的系统,我需要生成一个与 Instant.now (Java 8)。

    Instant.now().toString() 生成这样的日期:

    使用 java.util.Date 我有个约会:

        Date date = new Date(System.currentTimeMillis());
        SimpleDateFormat sdf;
        sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
        String text = sdf.format(date);
        System.out.println(text);
    

    我不知道我是否可以简单地连接一个 “Z” 在今天结束的时候。

    没有 “Z” 另一个使用 Instant.parse 抛出错误:

    无法在索引23处分析“2018-12-19T10:38:13.892” 在java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter。java:1988) 在java.base/java.time.Instant.parse(Instant。java:395)

    2 回复  |  直到 6 年前
        1
  •  4
  •   xingbin    6 年前

    Z 方法 UTC time zone ,您可以将时区设置为 UTC Z轴 举止上:

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
    sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
    
        2
  •  4
  •   Anonymous    6 年前

    三百一十个后场

        String text = Instant.now().toString();
    

    2018-12-19T13:37:37.186Z

    • 在Java8和更高版本以及更新的Android设备上(API级别26),现代API是内置的。
    • 在Java6和Java7中,获取三个10的Backport,即新类的Backport(对于JSR310是三个10;请参见底部的链接)。
    • 在(旧的)Android上使用Android版本的ThreeTen Backport。它叫3TENABP。并确保从导入日期和时间类 org.threeten.bp 有分装的。

    如果您不想依赖外部依赖关系,直到您转到Java 8或更高版本,那么(最)正确的解决方案是将其他两个答案(其中一个现在已删除)中的部分组合起来:

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXX");
        sdf.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
        String text = sdf.format(System.currentTimeMillis());
    

    2018-12-19T13:37:37.285Z

    它并不总是给出与 Instant.toString ,但它会给出一个字符串 Instant Instant.toString() 只打印需要的小数,上面 SimpleDateFormat 当其中一些是 0

    X 将打印 Z

    链接