如何处理跨多个时区的图像文件下载?

时间:2017-12-04 12:27:03

标签: android timezone

我每天早上上午9点后按照我的时区从服务器下载图像文件。我还希望在上午9点

显示第二天的文件

所以我会根据我的时区在 9am 之前更新该图像文件,这样可以确保每天都获得更新的图像文件。并且所有用户都有足够的时间下载相同的图像文件,即 23小时和最多45分钟。 * 15分钟被认为是更新目的

现在,如果用户来自我的时区,该应用程序可以正常工作,但如果用户超过我的时区,它将无法正常工作。有可能两次获得相同的图像文件。

此外,如果我选择根据时区更新文件,其中9am首先出现,那么其他部分的用户将无法 23小时和45分钟下载。

我想知道任何其他解决方案,而不是每个时区都有单独的服务器,因为它也很难在app中实现。

更新 我认为没有办法提供最多23小时和45分钟的窗口,并在第二天上午9点显示图像。这两件事都无法在多个时区实现。

我正在使用带有热链接的图像,即具有相同地址的直接下载链接。

2 个答案:

答案 0 :(得分:1)

据我了解你的要求

  • 图片上传发生在上传者(您的)时区的每天上午8:45到9点之间。可以在其他时间下载。
  • 每位客户应在客户所在的时区每天上午9点显示前一天的图片。
  • 客户应该被允许在23小时45分钟的窗口下载​​图像。

我也明白,它可以很好地与您所在时区的客户合作。

让我们看一下your comment to another answer的示例:上传发生在亚洲/加尔各答时区(印度),亚洲/东京时区(日本)有客户。当上传在印度9完成时,日本时间已经是12:30。有些网站会为您进行此类时区转换,例如Time Zone Converter – Time Difference Calculator。在日本的12:30,只剩下20小时30分钟,直到第二天早上9点显示图像。所以我们无法满足要求。

让我们暂时想象一下你20小时30的窗户(你可能不想这样)。要让客户找出该窗口的时间和长度,只需知道上传者的时区即可。然后将9:00亚洲/加尔各答转换为12:30亚洲/东京,发现该窗口于12:30开放。如何在客户端程序中进行转换,您可以在其他问题和答案中找到,例如Timezone conversion

如果东京的客户需要23小时45的窗口,您需要提前上传图片。更准确地说,它需要在不迟于日本时间9:15上传。再次,将此时间转换为您自己的时区,以找出它的时间。

我们还没有完成。虽然日本时间(UTC + 9)领先印度时间,但一些时区甚至更远。根据{{​​3}},一些时区是UTC + 14,无论是全年还是夏季。列表不是静态的。要准备将来的更改,您可能需要再添加几个小时。 java.time中的区域偏移转到UTC + 18.

如果您在9:15之前上传图像,比如UTC + 16,那么您正在为您自己的时区和其他时区的客户创建挑战。如果客户知道上传何时发生,客户可能能够应对挑战。这只是意味着他们经常需要在未来的日子里保存更多的图片,他们需要将上传时间转换为他们自己的时区。处理后者的一种更实际的方法可能是宣布和处理UTC的上传时间,正如Abdul Waheed在Time Zone Abbreviations – Worldwide List中所说。

ThreeTenABP

对于您的时区转换,我推荐JSR-310,即现代Java日期和时间API,也称为java.time。这还没有内置在大多数Android设备上(它会来),所以你需要ThreeTenABP,JSR-310到Android的后端。 another answer中有详尽的解释。然后,您可以使用this question: How to use ThreeTenABP in Android Project为您的时区转换编码。

要详细了解现代API,请访问this answer或在网上查找其他资源。

答案 1 :(得分:-1)

您可以使用UTC时间执行此操作。您需要获取当前UTC,然后将时间转换为设备当前时区,然后您就可以获得所需内容。希望有所帮助。