如何将此字符串传输到日期格式

时间:2011-11-04 23:45:16

标签: java date-format

我尝试使用SimpleDateFormat来完成这项工作, 但是我不知道如何处理字符串中的T" 2008-08-01T15:47:00.557",任何人都可以帮我这个吗?

5 个答案:

答案 0 :(得分:2)

您需要使用格式“yyyy-MM-dd'T'hh:mm:ss.SSS”。

在附加说明中,如果您尝试处理xml日期,请查看以下问题:Convert Java Date into XML Date Format (and vice versa)

答案 1 :(得分:1)

我不是很确定。但如果我记得很好,你必须用你的格式用单引号括起T.

String yourFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS";

答案 2 :(得分:0)

SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd'T'HH:mm:ss.SSS”);

几乎这个确切的例子在API中给出,检查出来:-) http://download.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

答案 3 :(得分:0)

因为你的例子是24H格式而不是AM / PM一个

你应该使用HH(大写)代替hh

像这样

String EXT_JS_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss";

答案 4 :(得分:0)

ISO 8601

您的字符串格式符合ISO 8601标准。

java.time

Java 8及更高版本包含java.time框架,以取代问题和其他答案中使用的旧日期时间类。

在解析/生成字符串时,新类默认使用ISO 8601标准。所以无需指定编码格式模式

时区

您的输入字符串缺少任何时区或offset-from-UTC。因此,您必须指定此字符串具有含义的时区。如果未指定,则解析会自动应用JVM的当前默认时区。不好,因为默认值可能不是用于字符串的区域。此外,JVM的默认值可以随时更改,即使在运行时也是如此。

如果是UTC

如果您的字符串是作为时区的UTC,只需附加一个<div class="footer"> <div class="container"> <div class="row"> <ul class="col-md-6"> <li><h4>Links</h4></li> <li><a href="index.html">Home</a></li> <li><a href="courses.html">Courses</a></li> <li><a href="sign-up.html">Sign Up</a></li> <li><a href="log-in.html">Log In</a></li> <li><a href="help.html">Help</a></li> </ul> <div class="col-md-6"> </div> </div> <div class="row"> <ul class="col-md-6"> <li><h4>Social Media</h4></li> <li><a href="#">Facebook</a></li> <li><a href="#">Twitter</a></li> <li><a href="#">Youtube</a></li> <li><a href="#">Instagram</a></li> </ul> </div> </div> </div>(“Zulu”的缩写,表示UTC)。然后解析为Z,在UTC时间轴上的一个时刻。

Instant

转储到控制台。

String input = "2008-08-01T15:47:00.557";
Instant instant = Instant.parse ( input + "Z" );
  

时刻:2008-08-01T15:47:00.557Z

如果时区

如果您的字符串用于其他时区,我们需要指定。使用适当的时区名称(从不在印刷机中看到的3-4个字母代码)。在这里,我们任意选择蒙特利尔时区。

对于格式化模式,我们使用ISO 8601的预定义格式之一:DateTimeFormatter.ISO_LOCAL_DATE_TIME('LOCAL'表示输入字符串中没有嵌入时区或偏移量。)

System.out.println ( "instant: " + instant );

转储到控制台。我们还从String input = "2008-08-01T15:47:00.557"; ZoneId zoneId = ZoneId.of ( "America/Montreal" ); DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; formatter = formatter.withZone ( zoneId ); ZonedDateTime zdt = ZonedDateTime.parse ( input , formatter ); 中提取Instant,以便您可以在UTC中看到相同的时刻。通常最好在您的业务逻辑中使用UTC;仅将输出时区应用于用户。

ZonedDateTime
  

输入:2008-08-01T15:47:00.557 | zdt:2008-08-01T15:47:00.557-04:00 [美国/蒙特利尔] |瞬间:2008-08-01T19:47:00.557Z