Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.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 “此”的时间格式是什么;日期:&引用;2014-08-20 00:00:00-0500;?_Java_Android_Date - Fatal编程技术网

Java “此”的时间格式是什么;日期:&引用;2014-08-20 00:00:00-0500;?

Java “此”的时间格式是什么;日期:&引用;2014-08-20 00:00:00-0500;?,java,android,date,Java,Android,Date,我尝试通过以下方式转换此日期: SimpleDateFormat fromFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSSZ"); 但我得到了: java.text.ParseException: Unparseable date: "2014-09-20 00:00:00 -0500" (at offset 20) “-0500”是UTC的偏移量,采用RFC822格式。您只需要Z,而不需要SSS 表中有如下内容: 符号:Z

我尝试通过以下方式转换此日期:

SimpleDateFormat fromFormat  = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSSZ");
但我得到了:

 java.text.ParseException: Unparseable date: "2014-09-20 00:00:00 -0500" (at offset 20)
“-0500”是UTC的偏移量,采用RFC822格式。您只需要
Z
,而不需要
SSS

表中有如下内容:

  • 符号:Z
  • 含义:时区(RFC 822)
  • 种类:(时区)
  • 示例:
    Z/ZZ/ZZZ
    :-0800
    ZZZZ
    :GMT-08:00
    ZZZZZ
    :-08:00
当然,我个人也会指定一个区域设置:这是一种机器可读的格式,而不是面向人的格式,因此我通常会指定
locale.US

SimpleDateFormat format  = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z",
                                                Locale.US);
String text = "2014-08-20 00:00:00 -0500";
System.out.println(format.parse(text));
答案是正确的

标准日期时间格式 下面是一些示例代码,演示如何将字符串转换为符合

乔达时间 您可以将该兼容字符串直接传递给中的DateTime构造函数。Java 8中的等效版本也是如此(受Joda Time的启发)

转储到控制台

System.out.println( "inputRaw: " + inputRaw );
System.out.println( "input: " + input );
System.out.println( "dateTimeMontréal: " + dateTimeMontréal );
System.out.println( "dateTimeUtc: " + dateTimeUtc );
当运行时

inputRaw:2014-08-20 00:00:00-0500
输入:2014-08-20T00:00:00-0500
日期时间:2014-08-20T01:00:00.000-04:00
日期时间UTC:2014-08-20T05:00:00.000Z
DateTimeZone timeZone = DateTimeZone.forID( "America/Montreal" ); // Specify it rather than have JVM's default applied.
DateTime dateTimeMontréal = new DateTime( input, timeZone );
DateTime dateTimeUtc = dateTimeMontréal.withZone( DateTimeZone.UTC );
System.out.println( "inputRaw: " + inputRaw );
System.out.println( "input: " + input );
System.out.println( "dateTimeMontréal: " + dateTimeMontréal );
System.out.println( "dateTimeUtc: " + dateTimeUtc );