2016-11-21 58 views
-2

例如我有datevalue = 1479709790;这是在纪元 ,我想把这个纪元时间只转换成星期几,星期一或星期二。下面的日子将在周日前获得,如周日前一样。java,如何将Epoch时间转换为星期几

public String getDay(long day){ 
    this.day=day; 
    String dayOfWeeks; 
    long time=day*1000l; 

    int days = (int)((time/(1000*60*60*24))%7); 

    switch (days){ 
     case 1: 
      dayOfWeeks = "Sun"; 
      break; 
     case 2: 
      dayOfWeeks="Mon"; 
      break; 
     case 3: 
      dayOfWeeks = "Tue"; 
      break; 
     case 4: 
      dayOfWeeks="Wed"; 
      break; 
     case 5: 
      dayOfWeeks = "Thru"; 
      break; 
     case 6: 
      dayOfWeeks="Frid"; 
      break; 
     case 7: 
      dayOfWeeks = "Sat"; 
      break; 
     default: 
      dayOfWeeks="Sat"; 
    } 

    return dayOfWeeks; 
} 
+0

什么划时代的是,在,你会得到什么结果,你有什么尝试? –

+0

'Instant.ofEpochMilli(1479709790L * 1000L)'表示您的日期是'2016-11-21T06:29:50Z'。您想在哪个时区获得星期几?在'澳大利亚/悉尼'时区将是'星期一',但时区'America/Anchorage'将是'SUNDAY'。 – Andreas

+0

当使用'%7'时,结果将是一个介于0和6之间的数字,所以为什么'switch'语句有'case 7'?如果日期名称被移动了一个,你显然建立了'switch'错误,那么为什么不把名称移动到正确的'case'? – Andreas

回答

2

假设你没有考虑时区(即假设一切都是UTC),也可能是那样简单:什么规模,你应该得到什么结果

public static DayOfWeek getDayOfWeek(long epochSecond) { 
    return Instant.ofEpochSecond(epochSecond).atOffset(ZoneOffset.UTC).getDayOfWeek(); 
} 
相关问题