【问题标题】:String to calendar with timezone in android在android中带有时区的日历字符串
【发布时间】:2012-05-16 18:59:43
【问题描述】:

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

   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 和 Timezone 传递时间字符串 '2012-05-08T09:10:10'是 GMT+7,结果(来自日历对象)应该是:2012-05-08T16:10:10
问题是由于某些原因,我不想使用Joda time。那么,我该怎么做呢?

【问题讨论】:

    标签: java android timezone


    【解决方案1】:

    只需使用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小时的地方

    【讨论】:

    • @R4j 问题是你在做相反的事情。您要求将日期和时间从 GMT+7 转换为您的时区
    • 谢谢,我搞错了。我想将日期时间从 UTC 转换为我的时区 (GMT +7)。可以举个例子吗?
    • @R4j 我更新了我的帖子。只需切换时区。将 GMT+0 传递给方法,打印时使用 GMT+7。
    • 非常感谢。这就是我需要的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多