【问题标题】:Convert Unix Timestamp in Android with a static timezone that observes DST使用遵守 DST 的静态时区转换 Android 中的 Unix 时间戳
【发布时间】:2014-03-17 13:27:00
【问题描述】:

我无法找到如何将 unix 时间戳转换为我的 Android 应用程序的正常日期时间。在我的用例中,所有事件报告都是在美国山区时间提交的。服务器处理时间并存储正确的 unixtime。但是,当我的应用程序从服务器检索报告时间时,无论用户位于世界的哪个地方,它都需要在美国山区时区显示 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);

【问题讨论】:

    标签: android datetime timezone unix-timestamp dst


    【解决方案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。

    【讨论】:

      猜你喜欢
      • 2013-04-15
      • 2017-04-25
      • 2015-10-07
      • 2013-05-20
      • 2021-03-23
      • 1970-01-01
      • 2015-04-20
      • 1970-01-01
      • 2010-10-09
      相关资源
      最近更新 更多