SimpleDateFormat只获得时间

时间:2012-04-19 21:14:16

标签: android timestamp date-format simpledateformat

当我尝试从时间戳中获取时间时,我遇到了问题。

时间戳的一个例子是:

2012-04-19T23:05:00 + 0200

我认为格式是“yyyy-MM-dd'T'HH:mm:ss.SSSZ”对吗? 它必须是“HH:mm”。

我使用以下代码,但它没有任何回复:

public String getTime(String Vertrektijd){
        final SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
        Date dateObj;
        String newDateStr = null;
        try
        {
            dateObj = df.parse(Vertrektijd);
            SimpleDateFormat fd = new SimpleDateFormat("HH:mm");
            newDateStr = fd.format(dateObj);
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }
        return newDateStr;
    }

感谢您的帮助!

3 个答案:

答案 0 :(得分:4)

您的代码是正确的......

在示例时间内,您在问题中给出的内容(即“2012-04-19T23:05:00 + 0200”)缺少MilliSeconds

尝试传递此

getTime("2012-04-19T23:05:00.235+0200");

它应该有用。

编辑: 正如MH所提到的,如果你不想使用毫秒 您可以将代码更改为

final SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");

答案 1 :(得分:0)

Date有一个getHours()和getMinutes()函数,但不推荐使用它。正确的方法是使用日历

Calendar calendar = Calendar.getInstance();
calendar.setTime( dateObj );
int hours = calendar.get( Calendar.HOUR_OF_DAY );
int minutes = calendar.get( Calendar.MINUTE );

答案 2 :(得分:0)

Here试图总结Java和Android提供的与日期,时间和时区相关的所有令人困惑的类。基本上,您使用GregorianCalendar对象进行大部分日期/时间操作,可能使用Calendar超类中的方法。要进行特定于语言环境的格式设置,您需要一个DateFormat。但是这只能格式化Date对象,因此您需要先将Calendar / GregorianCalendar转换为其中之一。基本上,SimpleDateFormat用于进行自定义格式化,正如您已经发现的那样。

注意有两个不同的类叫做“DateFormat”。