如何在午夜到其时区的午夜恰好向Android应用程序提供文件



我有一台配置为GMT 5:30的服务器,并使用Cron作业生成日常新JSON文件。生成的文件名为1551139200000.JSON IE.GMT:2019年2月26日,星期二12:00:00 AM。

仅在上午12:00之后,如何使此文件可用于Android应用。目前,它可能可用于未达到12:00 AM的所有时区。在这种情况下,它应该访问前一天的JSON文件。

// normal code here.
long fullMsecs = System.currentTimeMillis();
long ist_offset = 330*60*1000;
long filename = (fullMsecs + ist_offset)/86400_000 * 86400_000;
Log.d(TAG, "onCreate:filename" + filename);
// filename would be affixed with required file extension.

ps:此逻辑可在著名的填字游戏中获得,例如puzzle bonza。在那场比赛中,新的难题将在开始的初期IE(上午12:00)访问。

java.time和threetenabp

    // 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.Time,现代Java日期和时间API,为您需要的设施提供了非常好的设施。

问题:我可以将Java.Time与Android Minsdkversion 19?

一起使用

是的,java.Time在较旧的和较新的Android设备上都可以很好地工作。它至少需要 Java 6

  • 在Java 8及以后以及在新的Android设备上(来自API级别26),现代API是内置的。
  • 在Java 6和7中获得了三分之一的回向运动,这是现代阶级的后座(JSR 310的Threeten;请参阅底部的链接)。
  • 在(较旧的)Android上使用Threeten Backport的Android版本。它叫做三分之一。并确保您从org.threeten.bp导入带有子包的日期和时间类。

链接

  • Oracle教程:解释如何使用Java.Time的日期时间。
  • Java规范请求(JSR)310,首先描述了java.time
  • Threeten Backport Project,java.time的Backport到Java 6和7(JSR-310的Threeten)。
  • Threetenabp,Threeten Backport的Android Edition
  • 问题:如何在Android项目中使用Threetenabp,并具有非常详尽的解释。

相关内容

  • 没有找到相关文章

最新更新