Har*_* D. 13 java parsing android datetime-format
如何 在Date对象中解析此日期字符串2013-03-13T20:59:31 + 0000?
我尝试过这种方式,但不工作.
DateFormat df = new SimpleDateFormat("YYYY-MM-DDThh:mm:ssTZD");
Date result = df.parse(time);
Run Code Online (Sandbox Code Playgroud)
msa*_*sam 32
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ");
年份是小写y.输入中与日期无关的任何字符(如"T"中的字符2013-03-13T20:59:31+0000应引用''.
有关已定义模式字母的列表,请参阅文档
解析检查给定日期是否为您指定的格式.要在检查后以特定格式打印日期,请参阅以下内容:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ");
Date result;
try {
result = df.parse("2013-03-13T20:59:31+0000");
System.out.println("date:"+result); //prints date in current locale
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(sdf.format(result)); //prints date in the format sdf
}
Run Code Online (Sandbox Code Playgroud)
Ner*_*een 28
尝试:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
Run Code Online (Sandbox Code Playgroud)
检查http://developer.android.com/reference/java/text/SimpleDateFormat.html
具体来说:
yyyy-MM-dd 1969-12-31
yyyy-MM-dd 1970-01-01
yyyy-MM-dd HH:mm 1969-12-31 16:00
yyyy-MM-dd HH:mm 1970-01-01 00:00
yyyy-MM-dd HH:mmZ 1969-12-31 16:00-0800
yyyy-MM-dd HH:mmZ 1970-01-01 00:00+0000
yyyy-MM-dd HH:mm:ss.SSSZ 1969-12-31 16:00:00.000-0800
yyyy-MM-dd HH:mm:ss.SSSZ 1970-01-01 00:00:00.000+0000
yyyy-MM-dd'T'HH:mm:ss.SSSZ 1969-12-31T16:00:00.000-0800
yyyy-MM-dd'T'HH:mm:ss.SSSZ 1970-01-01T00:00:00.000+0000
Run Code Online (Sandbox Code Playgroud)
日期java.util时间 API 及其格式化 APISimpleDateFormat已经过时且容易出错。建议完全停止使用它们并切换到现代 Date-Time API *。
使用java.time现代日期时间 API 的解决方案:您的输入字符串具有时区偏移,因此应将其解析为OffsetDateTime.
演示:
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ssxx", Locale.ENGLISH);
OffsetDateTime odt = OffsetDateTime.parse("2013-03-13T20:59:31+0000", dtf);
System.out.println(odt);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
2013-03-13T20:59:31Z
Run Code Online (Sandbox Code Playgroud)
输出Z中的 是零时区偏移的时区指示符。它代表祖鲁语并指定Etc/UTC时区(具有+00:00小时的时区偏移量)。
从Trail: Date Time中了解有关现代日期时间 API 的更多信息。检查此答案和此答案以了解如何将java.timeAPI 与 JDBC 结合使用。
java.util.Date:您可以使用Date#from来获取 的实例java.util.Date,如下所示:
Date date = Date.from(odt.toInstant());
Run Code Online (Sandbox Code Playgroud)
* 如果您正在从事 Android 项目,并且您的 Android API 级别仍然不符合 Java-8,请通过 desugaring 检查可用的 Java 8+ API。请注意,Android 8.0 Oreo 已提供对java.time.
| 归档时间: |
|
| 查看次数: |
56187 次 |
| 最近记录: |