Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Instant.now相当于java.util.Date或java 7_Java_Datetime_Java 8_Java 7_Datetime Format - Fatal编程技术网

Instant.now相当于java.util.Date或java 7

Instant.now相当于java.util.Date或java 7,java,datetime,java-8,java-7,datetime-format,Java,Datetime,Java 8,Java 7,Datetime Format,我有一个使用Java 7的系统,我需要生成一个相当于Instant.now(Java 8)的日期 例如,Instant.now().toString()生成如下日期: “2018-12-19T12:32:46.816Z” 使用java.util.Date我有一个日期:“2018-12-19T10:38:13.892” 我不知道是否可以在这个日期结束时简单地连接一个“Z” 如果没有“Z”,另一个使用即时解析此日期的系统将抛出错误: java.time.format.DateTimeParseExc

我有一个使用Java 7的系统,我需要生成一个相当于
Instant.now
(Java 8)的日期

例如,
Instant.now().toString()
生成如下日期: “2018-12-19T12:32:46.816Z”

使用
java.util.Date
我有一个日期:“2018-12-19T10:38:13.892”

我不知道是否可以在这个日期结束时简单地连接一个“Z”

如果没有“Z”,另一个使用
即时解析此日期的系统将抛出错误:

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

Z
意味着您可以手动将时区设置为
UTC
并附加
Z

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
Z
意味着您可以手动将时区设置为
UTC
并附加
Z

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
三百一十个后场 现代java日期和时间API java.time已经进行了后端口。因此,只需按照Java 8中的操作:

    String text = Instant.now().toString();
刚才跑步我得到:

2018-12-19T13:37:37.186Z

  • 在Java8和更高版本以及更新的Android设备上(API级别26),现代API是内置的
  • 在Java6和Java7中,获取三个后端口,即新类的后端口(三个用于JSR310;请参阅底部的链接)
  • 在(较旧的)Android上使用Android版本的ThreeTen Backport。它叫ThreeTenABP。并确保从带有子包的
    org.threeten.bp
    导入日期和时间类
过时的SimpleDataFormat 如果您不想在迁移到Java 8或更高版本之前依赖外部依赖,那么(最)正确的解决方案是将其他两个答案(其中一个现在已删除)中的片段组合在一起:

2018-12-19T13:37:37.285Z

它并不总是给出与
Instant.toString
完全相同的字符串,但它会给出一个
Instant
可以在另一个系统中解析的字符串。虽然
Instant.toString()
只打印所需的小数,但当其中一些为
0
时,上述
SimpleDataFormat
也将打印三个小数

当格式化程序的时区为UTC时,格式化模式字母(大写)
X
Z
打印为“时区”(实际上只是一个偏移量)

链接
  • ,java.time的后端口
到Java6和Java7(JSR-310为三十)
  • ,其中首先描述了
    java.time
  • ,Android版Three Ten Backport
  • ,解释得非常透彻
  • 解释如何使用
    java.time
  • Three Ten Backport 现代java日期和时间API java.time已经进行了后端口。因此,只需按照Java 8中的操作:

        String text = Instant.now().toString();
    
    刚才跑步我得到:

    2018-12-19T13:37:37.186Z

    • 在Java8和更高版本以及更新的Android设备上(API级别26),现代API是内置的
    • 在Java6和Java7中,获取三个后端口,即新类的后端口(三个用于JSR310;请参阅底部的链接)
    • 在(较旧的)Android上使用Android版本的ThreeTen Backport。它叫ThreeTenABP。并确保从带有子包的
      org.threeten.bp
      导入日期和时间类
    过时的SimpleDataFormat 如果您不想在迁移到Java 8或更高版本之前依赖外部依赖,那么(最)正确的解决方案是将其他两个答案(其中一个现在已删除)中的片段组合在一起:

    2018-12-19T13:37:37.285Z

    它并不总是给出与
    Instant.toString
    完全相同的字符串,但它会给出一个
    Instant
    可以在另一个系统中解析的字符串。虽然
    Instant.toString()
    只打印所需的小数,但当其中一些为
    0
    时,上述
    SimpleDataFormat
    也将打印三个小数

    当格式化程序的时区为UTC时,格式化模式字母(大写)
    X
    Z
    打印为“时区”(实际上只是一个偏移量)

    链接
    • ,java.time的后端口到Java6和Java7(JSR-310为三十)
    • ,其中首先描述了
      java.time
    • ,Android版Three Ten Backport
    • ,解释得非常透彻
    • 解释如何使用
      java.time

    • 你考虑过了吗?java.time,现代java日期和时间API,已经被后传到java 6和java 7。
      java.util.date
      本身没有时区(这就是
      Z
      代表的时区),因此您必须添加它。例如,格式为:
      sdf.setTimeZone(TimeZone.getTimeZone(“UTC”)
      @Glains实际上,
      Z
      代表UTC,表示与UTC的偏移量为零小时分秒,而不是时区。时区是特定地区人民使用的偏移量的过去、现在和未来变化的历史。
      java.util.Date
      java.time.Instant
      一样,代表UTC中的一个时刻,因为它只是自UTC中1970年第一个时刻的历元引用以来的一个计数<代码>日期是自1970-01-01T0:00∶0Z的毫秒数,<代码>即时< /COD>是纳秒的计数,两者都以定义表示UTC中的时刻。您考虑过吗?java.time,现代java日期和时间API,已经被后传到java 6和java 7。
      java.util.date
      本身没有时区(这就是
      Z
      代表的时区),因此您必须添加它。例如,格式为:
      sdf.setTimeZone(TimeZone.getTimeZone(“UTC”)@G