是否可以或有任何方法自动将此类型的字符串转换为日期对象?
String is = yyyy_mm_ddThh-mm-ss
我需要将此字符串转换为日期对象,因为我必须与实时进行比较。子串或拆分可能有效,但我只是想学习是否有任何特殊的东西
编辑:
从中间T
的原因开始,simpleDateFormat无法正常工作。
已解决: 我忘记在T
之前和之后放'
SimpleDateFormat("yyyy_mm_dd'T'hh-mm-ss");
答案 0 :(得分:2)
您需要使用单引号T
跳过'T'
。另请注意,小'm'
是分钟的格式。使用大写'M'
作为月份格式。尝试,
DateFormat df=new SimpleDateFormat("yyyy_MM_dd'T'hh-mm-ss");
System.out.println(df.format(new Date()));
有关详细信息,请阅读SimpleDateFormat
的此文档答案 1 :(得分:0)
您需要使用如下日期格式解析String:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MM_dd'T'hh-mm-ss");
Date date;
try {
date = sdf.parse(sdf1.format(dateX) + " " + time);
} catch (ParseException e) {
e.printStackTrace();
}
答案 2 :(得分:0)
Joda-Time为各种此类ISO 8601格式提供内置格式化程序。所以你甚至不必费心去创建那个格式字符串。
请参阅此课程:
http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html
我了解到你甚至不需要使用Joda-Time 2.3的格式化程序。
您的字符串几乎采用ISO 8601格式。用连字符替换这些下划线。
DateTime的构造函数接受ISO 8601格式的字符串。
// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.
// import org.joda.time.*;
// import org.joda.time.format.*;
DateTime dateTime = new DateTime( "2001-02-03T04:05:06", DateTimeZone.UTC );
System.out.println( "dateTime: " + dateTime.toString() );
跑步时......
dateTime: 2001-02-03T04:05:06.000Z
顺便说一下,你的问题无法解决时区问题。我的示例代码假设您的意思是UTC / GMT(没有时区偏移)。如果你的意思不同,你应该这样说。日期时间工作应始终明确关于时区而不是依赖于默认值。