当我试图从时间戳中仅获取时间时,我遇到了一个问题。
时间戳的一个例子是:
2012-04-19T23:05:00+0200
我想格式是“yyyy-mm-dd‘T’the :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;
}谢谢你的帮助!
发布于 2012-04-20 06:31:57
你的代码是正确的。
在示例时间中,您在问题中给出的时间(即"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-20 05:28:25
Date有一个getHours()和getMinutes()函数,但它已被弃用。正确的方法应该是使用Calendar
Calendar calendar = Calendar.getInstance();
calendar.setTime( dateObj );
int hours = calendar.get( Calendar.HOUR_OF_DAY );
int minutes = calendar.get( Calendar.MINUTE );发布于 2012-04-22 17:43:33
Here试图总结出Java和Android提供的所有与日期、时间和时区相关的令人困惑的类。基本上,大多数日期/时间操作都是使用GregorianCalendar对象完成的,可能使用Calendar超类中的方法。要进行特定于区域设置的格式化,您需要一个DateFormat。但是这只能格式化Date对象,所以您需要首先将Calendar/GregorianCalendar转换为其中之一。正如您已经发现的,SimpleDateFormat基本上是用于进行自定义格式化的。
请注意,有两个不同的类,称为“DateFormat”。
https://stackoverflow.com/questions/10236876
复制相似问题