将Java字符串解析为GMT日期

我试图解析一个代表使用GMT的日期的字符串,但它在我的个人电脑(太平洋)的时区中打印出来。 当我运行下面的时候,我得到了下面的输出。 关于如何让解析解析并返回GMT日期的任何想法? 如果你看下面我使用format.setTimeZone(TimeZone.getTimeZone(“GMT”))设置时区。 但它没有产生期望的结果。

从下面的代码输出:

Mon Oct 29 05:57:00 PDT 2012

 package javaapplication1;

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.TimeZone;


    public class JavaApplication1 {

        public static void main(String[] args) throws ParseException {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
            format.setTimeZone(TimeZone.getTimeZone("GMT"));
            System.out.println(format.parse("2012-10-29T12:57:00-0000"));
        }
    }

您正在使用format.setTimeZone(TimeZone.getTimeZone("GMT")); 在格式化程序中,它被用于将字符串格式化为日期ie

      Date date = format.parse("2012-10-29T12:57:00-0000");

解析治疗2012-10-29T12:57:00-0000GMT价值, 但你是打印date ,其中使用本地timezome打印,因此你注意到不同之处。

如果您想以GMT打印日期,请使用:

    String formattedDate = format.format(date);

并打印formattedDate这将是GMT

    System.out.println(formattedDate);

System.out.println(format.parse("2012-10-29T12:57:00-0000"));

将日期解析为GMT并返回Date对象。 然后将其打印出来(使用默认的toString() - 方法)。 这只是使用您的计算机的设置。 所以你应该使用:

Date parsedDate=format.parse("2012-10-29T12:57:00-0000");
System.out.println(format.format(parsedDate));

完整的工作示例

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

public class Main
{
    public static void main(String[] args)
    {
        final SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss z", Locale.ENGLISH);
        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
        System.out.println(sdf.format(new Date())); 
        // ^^^ note printing the results of sdf.format() 
        //     not a raw `Date`
    }
}

结果: 31-10-2012 08:32:01 UTC 请注意我实际上打印出来了!

链接地址: http://www.djcxy.com/p/59287.html

上一篇: Parsing Java String into GMT Date

下一篇: Java SimpleDateFormat Wrong Timezone after parsing