使用观察DST的静态时区转换Android中的Unix时间戳

时间:2014-02-18 01:47:24

标签: android datetime timezone unix-timestamp dst

我无法找到如何将unix时间戳转换为我的Android应用的正常日期时间。在我的用例中,事件的所有报告都在美国山区时间提交。服务器处理时间并存储正确的unixtime。但是,当我的应用程序从服务器检索报告时间时,无论用户所在的世界在哪里,都需要在US Mountain时区显示unix时间戳。此外,它还需要处理因夏令时造成的GMT偏移的变化。

以下是我的尝试,但我一直在收到错误。它说它无法解析setTimeZone方法,并且它期望在该函数中使用“,”。

//TODO: convert to readable time
String EventRegDate;
String EventRegTime;

EventUnixTime = eventData.getEventUnixtimeTime();//Returns unixtime of event in seconds
EventUnixTimeMilli = EventUnixTime * 1000; //convert to milliseconds

String timezone = "US/Mountain";
Calendar.setTimeZone(TimeZone timezone);
Date EventDate = new Date(EventUnixTimeMilli);
SimpleDateFormat EventDateFormatter = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat EventTimeFormatter = new SimpleDateFormat("HHMM");

// set strings to use when setting text views
EventRegDate = EventDateFormatter.format(EventDate);
EventRegTime = EventTimeFormatter.format(EventDate);

1 个答案:

答案 0 :(得分:1)

在玩了一些之后,我发现了它。

long EventUnixTime = eventData.getEventUnixtimeTime();
long EventUnixTimeMilli = (EventUnixTime *1000);

Date EventDate= new Date(EruptionUnixTimeMilli);

SimpleDateFormat EventDateFormatter = new SimpleDateFormat("yyyy-MM-dd");
EventDateFormatter.setTimeZone(TimeZone.getTimeZone("US/Mountain"));

SimpleDateFormat EventTimeFormatter = new SimpleDateFormat("HHMM");
EventTimeFormatter.setTimeZone(TimeZone.getTimeZone("US/Mountain"));

String EventRegDate = EventDateFormatter.format(EventDate);
String EventRegTime = EventTimeFormatter.format(EventDate);

这将输出两个字符串,一个是YYYY-MM-DD,一个是HHMM,总是在山区时间。