使用Java中的timezoneoffset将本地时间转换为UTC

时间:2015-09-14 13:29:04

标签: java date datetime

我有一个本地日期/时间戳,我有一个以String格式存储的时区偏移量( myStringTimeStamp 变量名称如下)。我需要将本地日期/时间戳转换为UTC时间。

时间戳的格式为: yyyy-MM-dd HH:mm:ss

我尝试过各种变体:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);

sdf.setTimeZone(TimeZone.getTimeZone("UTC"));

//Convert timestamp to date 
Date d = sdf.parse(myStringTimeStamp, new ParsePosition(0)); 

newTimeStamp = sdf.format(d);

但我似乎无法弄清楚正确的公式。有帮助吗?

我不能使用第三方库/框架。

2 个答案:

答案 0 :(得分:1)

问题似乎是因为您在解析之前设置了目标时区。

首先解析,然后设置时区,最后格式化。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);

//Convert timestamp to date 
Date d = sdf.parse(myStringTimeStamp, new ParsePosition(0)); 

sdf.setTimeZone(TimeZone.getTimeZone("UTC"));

newTimeStamp = sdf.format(d);

答案 1 :(得分:1)

你有没有尝试过:

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);

    //Convert timestamp to date 
    Date d = sdf.parse(myStringTimeStamp, new ParsePosition(0)); 

    sdf.setTimeZone(TimeZone.getTimeZone("UTC"));

    newTimeStamp = sdf.format(d);