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

java,如何将历元时间仅转换为星期几,java,time,epoch,Java,Time,Epoch,例如,我有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); s

例如,我有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)
)不适用于低于26的API! 所以你可以使用下面的代码

   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;

}

那是什么时代,什么规模,你应该得到什么结果,你得到了什么结果,你尝试了什么?
Instant.ofEpochMilli(1479709090l*1000L)
说你的日期是
2016-11-21T06:29:50Z
。您希望一周中的哪一天进入哪个时区?在时区
澳大利亚/悉尼
将是
周一
,但在时区
美国/安克雷奇
将是
周日
。当使用
%7
时,结果将是一个介于0和6之间的数字,所以为什么
switch
语句有
案例7
?如果一天的名字移了一位,你显然把
开关造错了,那么为什么不把名字移到右边
的case
?@Andreas
Instant.ofEpochSecond(147970990L)
。@assylias DOH!当然我想我还是有点停留在旧的java日期逻辑上,嗯。