首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中获取UTC格式的日期对象

在Java中获取UTC格式的日期对象
EN

Stack Overflow用户
提问于 2014-02-28 17:27:49
回答 3查看 115.5K关注 0票数 42

我写了下面的代码。我想获取UTC格式的Date对象。

我可以使用SimpleDateFormat获得预期的UTC格式的日期字符串。但是使用相同的SimpleDateFormat对象,我无法获得UTC格式的对象。它返回的是IST格式的对象。

经过搜索,我发现Date对象并没有存储时间戳信息。

如何获取UTC格式的date对象?

代码语言:javascript
复制
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

public class dddd {

    /**
     * @param args
     */
    public static void main(String[] args) {
        System.out.println("Input - "+1393572325000L);
        DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
        Date date= new Date(1393572325000L);  
        String dateString = formatter.format(date);

        System.out.println("Converted UTC TIME (using Format method) : "+dateString);

        Date date2 =null;
        try {
            date2 = formatter.parse(dateString);
        } catch (ParseException e) {
            e.printStackTrace();
        }


        System.out.println("Parsed Date Object (using Parse method) : "+date2);

        System.out.println("Expected Date Object : Fri Feb 28 07:25:25 UTC 2014");

    }

}

这将打印以下输出:

代码语言:javascript
复制
Input - 1393572325000
Converted UTC TIME (using Format method) : 2014-02-28 07:25:25
Parsed Date Object (using Parse method) : Fri Feb 28 12:55:25 IST 2014
Expected Date Object : Fri Feb 28 07:25:25 UTC 2014
EN

回答 3

Stack Overflow用户

发布于 2014-02-28 17:36:35

代码语言:javascript
复制
final Date currentTime = new Date();
final SimpleDateFormat sdf = new SimpleDateFormat("EEE, MMM d, yyyy hh:mm:ss a z");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println("UTC time: " + sdf.format(currentTime));
票数 68
EN

Stack Overflow用户

发布于 2014-02-28 17:33:38

日期没有任何时区。您看到的只是Date.toString()方法对日期的格式化,该方法始终使用您的本地时区将与时区无关的日期转换为您可以理解的字符串。

如果您希望使用UTC时区将与时区无关的日期显示为字符串,那么可以使用带有UTC时区的SimpleDateFormat (正如您已经在问题中所做的那样)。

换句话说,时区不是日期的属性。它是用于将日期转换为字符串的格式的属性。

票数 23
EN

Stack Overflow用户

发布于 2015-10-20 03:57:41

您可以从现在开始减去时区差异。

代码语言:javascript
复制
final Calendar calendar  = Calendar.getInstance();
final int      utcOffset = calendar.get(Calendar.ZONE_OFFSET) + calendar.get(Calendar.DST_OFFSET);
final long     tempDate  = new Date().getTime();

return new Date(tempDate - utcOffset);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22091107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档