1

我正在寻找一种将时间字符串转换为日历的方法,如下所示:

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

上面的这段代码不起作用。
例如:当我使用模式yyyy-MM-dd'T'HH:mm:ss传递时间字符串“ 2012-05-08T09:10:10 ”并且时区为 GMT+7 时,结果(来自 Calendar 对象)应该是: 2012-05-08T16:10:10 问题是由于某些原因,我不想使用Joda 时间。那么,我该怎么做呢?

4

1 回答 1

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小时

于 2012-05-08T10:20:38.357 回答