繁体   English   中英

如何将时间戳转换为其他时区

[英]How to convert timestamp to different timezone

我将以下时间戳记发送到服务器。

Date date = new Date();
long timestamp = date.getTime();

这是从不同的时区生成的,我只有上述长值。 我需要将此时间转换为其他时区。 我尝试了以下方式,但仍然显示了当地时间。

// Convert to localdatetime using local time zone
LocalDateTime ldt = LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp),
            ZoneId.systemDefault());

// Convert time to required time zone. 
ZoneId est5EDT = ZoneId.of("EST5EDT");
ZonedDateTime est5EDTTime = ldt.atZone(est5EDT);
System.out.println("EST5EDT : " + est5EDTTime);

成功转换时间后,我需要获取该时间的时间戳。 这个怎么做?

您可以在打印时转换时区或时间戳格式。 如果您只想存储时间戳或比较时间戳,则无需执行任何操作。

这也可以使用joda时间来完成,这是我的代码:

import java.text.SimpleDateFormat;
import org.joda.time.DateTimeZone;


public class TimeTest{

private static final String DATE_FORMAT = "dd MMM yyyy HH:mm:ss";

private Date dateToTimeZone(Date tempDate, String timeZoneVal) throws ParseException{
            //timeZoneVal -> -8:00, 05:30, .....
            String string = timeZoneVal;
            String[] parts = string.split(":");
            String part1 = parts[0]; 
            String part2 = parts[1];

            int hoursOffset = Integer.parseInt(part1);
            int minutesOffset = Integer.parseInt(part2);

            DateTimeZone timeZone = DateTimeZone.forOffsetHoursMinutes(hoursOffset, minutesOffset);

            String gmtDate = tempDate.toGMTString();

            SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT);
            dateFormat.setTimeZone(timeZone.toTimeZone());

            return dateFormat.parse(gmtDate);       

        }
}

输出:

  1. tempDate-> 10月10日星期一00:00:00
  2. gmtDate-> 2016年10月9日18:30:00
  3. 在timeZone“ -08:00”-> Mon Oct 10 08:00:00中解析的日期

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM