Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.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
Java 这个日期格式是什么?2011-08-12T20:17:46.384Z_Java_Date_Time_Format_Simpledateformat - Fatal编程技术网

Java 这个日期格式是什么?2011-08-12T20:17:46.384Z

Java 这个日期格式是什么?2011-08-12T20:17:46.384Z,java,date,time,format,simpledateformat,Java,Date,Time,Format,Simpledateformat,我有以下日期:2011-08-12T20:17:46.384Z。这是什么格式?我试图通过DateFormat.getDateInstance().parse(dateStr)用Java1.4解析它,我得到了 java.text.ParseException:无法解析的日期:“2011-08-12T20:17:46.384Z” 我想我应该使用它进行解析,但我必须先知道格式字符串。到目前为止,我所能做的就是yyyy-MM-dd,因为我不知道t在这个字符串中是什么意思——与时区相关的东西?此日期字符串

我有以下日期:
2011-08-12T20:17:46.384Z
。这是什么格式?我试图通过
DateFormat.getDateInstance().parse(dateStr)
用Java1.4解析它,我得到了

java.text.ParseException:无法解析的日期:“2011-08-12T20:17:46.384Z”


我想我应该使用它进行解析,但我必须先知道格式字符串。到目前为止,我所能做的就是
yyyy-MM-dd
,因为我不知道
t
在这个字符串中是什么意思——与时区相关的东西?此日期字符串来自上显示的
lcmis:downloadedOn
标记。

不确定Java解析,但这是ISO8601:

不确定Java解析,但这是ISO8601:

T只是一个将日期与时间分开的文字,Z表示“零小时偏移量”,也称为“祖鲁时间”(UTC)。如果字符串始终具有“Z”,则可以使用:

SimpleDateFormat format = new SimpleDateFormat(
    "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
format.setTimeZone(TimeZone.getTimeZone("UTC"));

或者使用,您可以使用。

T只是一个用于将日期与时间分开的文字,Z表示“零小时偏移量”,也称为“祖鲁时间”(UTC)。如果字符串始终具有“Z”,则可以使用:

SimpleDateFormat format = new SimpleDateFormat(
    "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
format.setTimeZone(TimeZone.getTimeZone("UTC"));
或者使用,你可以使用。

tl;博士 输入字符串使用标准格式

Instant.parse ( "2011-08-12T20:17:46.384Z" ) 
ISO 8601 该格式由合理实用标准定义

T
将日期部分与时间部分分开。末端的
Z
表示(即,与UTC的偏移为零小时分秒)。
Z

java.time 与最早版本的Java捆绑在一起的旧日期时间类被证明是设计拙劣、混乱和麻烦的。避开它们

相反,请使用内置于Java8及更高版本中的框架。time类取代了旧的日期时间类和非常成功的Joda时间库

默认情况下,java.time类在解析/生成日期时间值的文本表示时使用

该类表示时间线上的一个时刻,分辨率为。该类可以直接解析输入字符串,而无需费心定义格式模式

Instant instant = Instant.parse ( "2011-08-12T20:17:46.384Z" ) ;


关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

该项目现已启动,建议迁移到类

您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要
java.sql.*
类。Hibernate5和JPA2.2支持java.time

从哪里获得java.time类

  • 、和更高版本-标准Java API的一部分,带有捆绑实现。
    • 带来了一些小功能和修复
    • 大多数java.time功能都在中向后移植到Java6和Java7
    • Android(26+)的更高版本捆绑了java.time类的实现
    • 对于早期的Android(tl;dr 输入字符串使用标准格式

      Instant.parse ( "2011-08-12T20:17:46.384Z" ) 
      
      ISO 8601 该格式由合理实用标准定义

      T
      将日期部分与一天中的时间部分分开。末尾的
      Z
      表示(即,与UTC的偏移为零小时分秒)。Z表示

      java.time 与最早版本的Java捆绑在一起的旧日期时间类被证明是设计拙劣、混乱和麻烦的。避免它们

      相反,使用Java 8及更高版本中内置的框架。Java.time类取代了旧的日期时间类和非常成功的Joda时间库

      默认情况下,java.time类在解析/生成日期时间值的文本表示时使用

      该类表示时间线上的某个时刻,分辨率为。该类可以直接解析输入字符串,而无需费心定义格式模式

      Instant instant = Instant.parse ( "2011-08-12T20:17:46.384Z" ) ;
      


      关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,如,&

      要了解更多信息,请参阅.和搜索堆栈溢出以获取许多示例和解释。规范为

      该项目现已启动,建议迁移到类

      您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要
      java.sql.*
      classes。Hibernate 5和JPA 2.2支持java.time

      从哪里获得java.time类

      • 、和更高版本-标准Java API的一部分,带有捆绑实现。
        • 带来了一些小功能和修复
        • 大多数java.time功能都在中向后移植到Java6和Java7
        • Android(26+)的更高版本捆绑了java.time类的实现

        • 对于早期的Android(有其他方法来解析它,而不是第一个答案。要解析它:

          (1) 如果要获取有关日期和时间的信息,可以将其解析为
          ZonedDatetime
          (自Java8)或
          date
          (旧)对象:

          (2) 如果您不在乎日期和时间,只想将信息视为纳秒级的瞬间,那么您可以使用
          Instant

          // The ISO format without zone ID is Instant's default.
          // There is no need to pass any format.
          Instant ins = Instant.parse("2011-08-12T20:17:46.384Z");
          

          除了第一个答案,还有其他方法可以解析它。要解析它:

          (1) 如果要获取有关日期和时间的信息,可以将其解析为
          ZonedDatetime
          (自Java8)或
          date
          (旧)对象:

          (2) 如果您不在乎日期和时间,只想将信息视为纳秒级的瞬间,那么您可以使用
          Instant

          // The ISO format without zone ID is Instant's default.
          // There is no need to pass any format.
          Instant ins = Instant.parse("2011-08-12T20:17:46.384Z");
          
          你可以用t
          Date date = format(UTC, "2020-04-19T00:30:07.000Z")
          
          String date = parse(UTC, new Date())
          
          String str = "20190927T182730.000Z"
          
          LocalDateTime fin;
          fin = LocalDateTime.parse( str, DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmss.SSSZ") );
          
          Exception in thread "main" java.time.format.DateTimeParseException: Text 
          '20190927T182730.000Z' could not be parsed at index 19
          
          public static long timestampToEpochSeconds(String srcTimestamp) {
              long epoch = 0;
          
              try {
                  if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
                      Instant instant = Instant.parse(srcTimestamp);
                      epoch = instant.getEpochSecond();
                  } else {
                      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSSSSS'Z'", Locale.getDefault());
                      sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
                      Date date = sdf.parse(srcTimestamp);
                      if (date != null) {
                          epoch = date.getTime() / 1000;
                      }
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          
              return epoch;
          }
          
          let isoDateTimeString = new Date().toISOString();
          
          import java.time.Instant;
          import java.time.OffsetDateTime;
          import java.time.ZonedDateTime;
          
          public class Main {
              public static void main(String[] args) {
                  String strDateTime = "2011-08-12T20:17:46.384Z";
          
                  Instant instant = Instant.parse(strDateTime);
                  OffsetDateTime odt = OffsetDateTime.parse(strDateTime);
                  ZonedDateTime zdt = ZonedDateTime.parse(strDateTime);
                  
                  System.out.println(instant);
                  System.out.println(odt);
                  System.out.println(zdt);
              }
          }
          
          2011-08-12T20:17:46.384Z
          2011-08-12T20:17:46.384Z
          2011-08-12T20:17:46.384Z
          
          import java.text.ParseException;
          import java.text.SimpleDateFormat;
          import java.util.Date;
          import java.util.Locale;
          
          public class Main {
              public static void main(String[] args) throws ParseException {
                  String strDateTime = "2011-08-12T20:17:46.384Z";
          
                  SimpleDateFormat sdf = new SimpleDateFormat("y-M-d'T'H:m:s.SSSXXX", Locale.ENGLISH);
                  Date date = sdf.parse(strDateTime);
                  // ...
              }
          }
          
          sdf.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
          String formatted = sdf.format(date);
          System.out.println(formatted); // 2011-8-12T20:17:46.384Z
          
          import org.joda.time.DateTime;
          import org.joda.time.format.DateTimeFormat;
          import org.joda.time.format.DateTimeFormatter;
          
          public class Main {
              public static void main(String[] args) {
                  String dateTimeStr = "2011-08-12T20:17:46.384Z";
                  DateTimeFormatter dtf = DateTimeFormat.forPattern("y-M-d'T'H:m:s.SSSZ").withOffsetParsed();
                  DateTime dateTime = dtf.parseDateTime(dateTimeStr);
                  System.out.println(dateTime);
              }
          }
          
          2011-08-12T20:17:46.384Z