java,如何将大纪元时间仅转换为星期几

java, how to convert Epoch time to day of weeks only

例如我有 datevalue=1479709790;这是在大纪元 我想将这个纪元时间转换为一周中的唯一一天,例如星期日、星期一或星期二。下面的一天会比星期天之前的星期一更早一天。

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;
}

假设您不考虑时区(即假设一切都是 UTC),它可以像这样简单:

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

以上方法(ofEpochSecond(epochSecond).atOffset(ZoneOffset.UTC))不适用于 API 小于 26 ! 所以你可以使用下面的代码

   public static String getdayOfWeek(long epochinSecond) {

    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(epochinSecond * 1000l);
    cal.setTimeZone(TimeZone.getTimeZone("UTC"));
    int i = cal.get(Calendar.DAY_OF_WEEK);
    String dayOfWeek;
    switch (i) {
        case 1:
            dayOfWeek = "Sunday";
            break;
        case 2:
            dayOfWeek = "Monday";
            break;
        case 3:
            dayOfWeek = "Tuesady";
            break;
        case 4:
            dayOfWeek = "Wednesday";
            break;
        case 5:
            dayOfWeek = "Thursday";
            break;
        case 6:
            dayOfWeek = "Friday";
            break;
        case 7:
            dayOfWeek = "Saturday";
            break;
        default:
            dayOfWeek = null;

    }
    return dayOfWeek;

}