java,如何将历元时间仅转换为星期几
例如,我有datevalue=1479709790;哪个是新纪元 我想把这个划时代的时间转换成一周中唯一的一天,比如星期天、星期一或星期二。下面的内容将在上面一天显示,就像星期天之前的星期一一样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
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
?@AndreasInstant.ofEpochSecond(147970990L)
。@assylias DOH!当然我想我还是有点停留在旧的java日期逻辑上,嗯。