将yyyy_mm_ddThh-mm-ss转换为日期对象?

时间:2013-12-10 17:13:24

标签: java date datetime time datetime-format

是否可以或有任何方法自动将此类型的字符串转换为日期对象?

String is = yyyy_mm_ddThh-mm-ss

我需要将此字符串转换为日期对象,因为我必须与实时进行比较。子串或拆分可能有效,但我只是想学习是否有任何特殊的东西

编辑: 从中间T的原因开始,simpleDateFormat无法正常工作。

已解决: 我忘记在T

之前和之后放'
SimpleDateFormat("yyyy_mm_dd'T'hh-mm-ss");

3 个答案:

答案 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(没有时区偏移)。如果你的意思不同,你应该这样说。日期时间工作应始终明确关于时区而不是依赖于默认值。