2016-11-21 3 views
-2

Например у меня есть datevalue = 1479709790; который находится в Epoch , и я хочу преобразовать это время в Эпоху только в один день, например, только воскресенье, понедельник или вторник. ниже будет день раньше, как в понедельник, до воскресенья.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'. В какой часовой пояс вы хотите получить день недели? В часовом поясе 'Австралия/Сидней', который будет' MONDAY', но в часовом поясе 'Америка/Анкоридж', который будет' SUNDAY'. – Andreas

+0

При использовании '% 7' результат будет содержать число от 0 до 6 включительно, так почему ваш оператор' switch' имеет «случай 7»? И если имена дней сдвинуты на один, вы, очевидно, построили «переключатель» неправильно, так почему бы просто не переместить имена в правый «случай»? – Andreas

ответ

2

Предполагая, что вы не учитывают часовых поясов (т.е. предполагается, что все UTC), это может быть столь же просто, как:

public static DayOfWeek getDayOfWeek(long epochSecond) { 
    return Instant.ofEpochSecond(epochSecond).atOffset(ZoneOffset.UTC).getDayOfWeek(); 
} 
Смежные вопросы