3

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

时间戳的一个例子是:

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;
    }

谢谢您的帮助!

4

3 回答 3

6

你的代码是正确的...

在示例时间中,您在问题中给出的内容(即“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");
于 2012-04-19T22:31:57.300 回答
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 );
于 2012-04-19T21:28:24.747 回答
0

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

请注意,有两个不同的类称为“DateFormat”。

于 2012-04-22T09:43:33.273 回答