我正在寻找一种将时间字符串转换为日历的方法,如下所示:
public static Calendar stringToCalendar(String strDate, TimeZone timezone){
String FORMAT_DATETIME = "yyyy-MM-dd'T'HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(FORMAT_DATETIME);
sdf.setTimeZone(timezone);
Date date = sdf.parse(strDate);
Calendar cal = Calendar.getInstance(timezone);
cal.setTime(date);
return cal;
}
上面的代码不起作用
例如:当我传递时间字符串' 2012-05-08T09:10:10 '时,模式 yyyy-MM-dd'T'HH:mm:ss 和时区是GMT + 7,结果(来自Calendar对象)应为: 2012-05-08T16:10:10
问题是出于某些原因,我不想使用Joda time。那么,我该怎么做呢?
答案 0 :(得分:2)
只需使用SimpleDateFormat并在其上设置TimeZone即可。然后调用parse()
方法。
编辑:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class temp2 {
public static void main(String[] args) throws ParseException {
String s = "2012-05-08T09:10:10";
Calendar cal = stringToCalendar(s, TimeZone.getTimeZone("GMT+0"));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("GMT+7"));
System.err.println(sdf.format(cal.getTime()));
}
public static Calendar stringToCalendar(String strDate, TimeZone timezone) throws ParseException {
String FORMAT_DATETIME = "yyyy-MM-dd'T'HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(FORMAT_DATETIME);
sdf.setTimeZone(timezone);
Date date = sdf.parse(strDate);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal;
}
}
输出:
2012-05-08 16:10:10 差异确实是7小时