我知道这可能是一个复制的问题,但我想解析一个字符串以将其转换为Date对象。我可以通过这样做来实现:
SimpleDateFormat parser = new SimpleDateFormat("yyyy-M-d (HH:mm:ss.S)");
Date date = parser.parse(propertiesvalue[i]);
它以这种格式返回“日期”:Fri Jan 30 13:55:00 CET 2015 但我想返回类似于:2015-01-30(13:55:00.00)数据对象(不作为字符串对象)。我需要它在本地Google数据存储区中插入日期。
答案 0 :(得分:0)
不要将日期时间对象与可能代表其值的字符串混淆。
日期时间对象没有格式。日期时间格式代表片刻。日期时间对象可以生成字符串。可以通过解析字符串来创建日期时间对象。但是日期时间对象和字符串总是分开且不同的。
你正在使用现在遗留下来的麻烦的旧日期时间类,取而代之的是java.time类。
Instant instant = Instant.now(); // Current moment in UTC
ZoneId z = ZoneId.of( "Pacific/Auckland" );
ZonedDateTime zdt = instant.atZone( z ); // Same moment viewed as wall-clock time of particular region.
生成一个字符串,以某种格式表示该对象的值。
DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuu-M-d (HH:mm:ss.S)" , Locale.US );
String output = zdt.format( f );
转储到控制台。
System.out.println( "instant.toString(): " + instant ); // Standard ISO 8601 format.
System.out.println( "zdt.toString(): " + zdt ); // Standard ISO 8601 format.
System.out.println( "output: " + output ); // Custom format.
请参阅此code run live at IdeOne.com。
instant.toString():2017-04-15T06:00:58.521Z
zdt.toString():2017-04-15T18:00:58.521 + 12:00 [太平洋/奥克兰]
输出:2017-4-15(18:00:58.5)
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
从哪里获取java.time类?