我有一个配置为时区IST(格林尼治标准时间+5:30)的服务器,每天都会使用Cron作业生成新的JSON文件。生成的文件名将为1551139200000.json,即GMT:2019年2月26日,星期二,12:00:00 AM。
如何仅在12:00 AM或之后将此文件提供给android应用。目前,该时间可能适用于未在12:00 AM的所有时区。在这种情况下,它应该访问前一天的Json文件。
except
PS:这种逻辑适用于诸如益智游戏Bonza之类的著名填字游戏。在该游戏中,新拼图将在当天的凌晨12:00访问。
答案 0 :(得分:2)
// Today in user’s time zone
LocalDate today = LocalDate.now(ZoneId.systemDefault());
// Today’s file name is epoch millis for 12 AM GMT
long startOfDayGmt = today.atStartOfDay(ZoneOffset.UTC)
.toInstant()
.toEpochMilli();
String fileName = String.valueOf(startOfDayGmt) + ".json";
System.out.println("File name: " + fileName);
刚运行时的输出是您期望的:
文件名:1551139200000.json
请不要像问题中那样手动计算日期和时间。它比您想象的要难,容易出错,并且难以阅读和维护。现代的Java日期和时间API java.time提供了非常好的功能,可以满足您的需求。
是的,java.time在较新和较旧的Android设备上均可正常运行。它只需要至少 Java 6 。
org.threeten.bp
导入日期和时间类。java.time
。java.time
向Java 6和7(JSR-310的ThreeTen)的反向端口。