我有几个事件的日期以 毫秒[1] 表示,我想知道当前周和当前月份内有哪些事件,但我不知道如何获取第一天(日/月/年) 并将其转换为毫秒,与该月的第一天相同。
[1]Since January 1, 1970, 00:00:00 GMT
原文由 cesarlinux 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有几个事件的日期以 毫秒[1] 表示,我想知道当前周和当前月份内有哪些事件,但我不知道如何获取第一天(日/月/年) 并将其转换为毫秒,与该月的第一天相同。
[1]Since January 1, 1970, 00:00:00 GMT
原文由 cesarlinux 发布,翻译遵循 CC BY-SA 4.0 许可协议
可以借助 java.util.Calendar
确定一周的第一天,如下所示:
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.setTimeInMillis(timestamp);
while (calendar.get(Calendar.DAY_OF_WEEK) > calendar.getFirstDayOfWeek()) {
calendar.add(Calendar.DATE, -1); // Substract 1 day until first day of week.
}
long firstDayOfWeekTimestamp = calendar.getTimeInMillis();
一个月的第一天可以确定如下:
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.setTimeInMillis(timestamp);
while (calendar.get(Calendar.DATE) > 1) {
calendar.add(Calendar.DATE, -1); // Substract 1 day until first day of month.
}
long firstDayOfMonthTimestamp = calendar.getTimeInMillis();
非常冗长,是的。
Java 7 将带有大大改进的日期和时间 API ( JSR-310 )。如果你还不能切换,那么你可以尽可能使用 JodaTime ,这使得它变得不那么复杂:
DateTime dateTime = new DateTime(timestamp);
long firstDayOfWeekTimestamp = dateTime.withDayOfWeek(1).getMillis();
和
DateTime dateTime = new DateTime(timestamp);
long firstDayOfMonthTimestamp = dateTime.withDayOfMonth(1).getMillis();
原文由 BalusC 发布,翻译遵循 CC BY-SA 2.5 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
本周以毫秒为单位:
本月以毫秒为单位: