在java中,我需要从格式的字符串中创建一个日历对象:
yyyy-MM-dd'T'HH:mm:ss
此字符串将始终设置为 GMT 时间。所以这是我的代码:
public static Calendar dateDecode(String dateString) throws ParseException
{
TimeZone t = TimeZone.getTimeZone("GMT");
Calendar cal = Calendar.getInstance(t);
date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
Date d = date.parse(dateString);
cal.setTime(d);
return cal;
}
进而:
Calendar cal = Calendar.getInstance();
try
{
cal = dateDecode("2002-05-30T09:30:10");
} catch (ParseException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
int month = cal.get(Calendar.MONTH)+1;
我得到以下输出:
Timezone: GMT+00:00 date: 2002-5-30 time: 7:30:10
正如您所看到的那样,这是错误的,因为提供的时间是格林威治标准时间而不是欧洲中部时间。我认为发生的情况是它认为提供的时间是 CET(这是我当前的时区),因此将时间从 CET 转换为 GMT,因此从最终结果中减去两个小时。
谁能帮我解决这个问题?
谢谢
顺便说一句:出于不同的原因,我不想使用 JodaTime。