我无法找到如何将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);
答案 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,总是在山区时间。