我正在开发一个应用程序,它可以选择上传图像(几乎和instagram一样)。数据库的设计方式是,每次在数据库中为上传的图像创建一行时,我都会保存创建的行的时间戳。当用户尝试获取上传的图像时,此日期将发送回移动应用程序。
所以我现在面临的问题是,创建的日期是特定于服务器所在国家/地区的日期(现在我使用的是亚马逊服务器)。如果我现在上传一张图片,并尝试立即获取它,它会显示我上传了6小时后的内容。
解决方案之一就是,将GPS位置与上传图像一起发送。但问题是,iPhone应用程序会询问用户是否允许该应用使用GPS。那么,如果用户否认该怎么办呢。该应用程序也适用于Android,有些手机可能甚至没有内置GPS。
我正在使用php作为我的后端代码和mysql数据库。
提前致谢。 Zeeshan
答案 0 :(得分:2)
通常,您使用UTC保存后端的时间戳。
显示时间时,您可以使用设备的本地时区显示正确的当地时间。
答案 1 :(得分:2)
通过始终存储UTC次而非本地时间,然后在将其显示给用户时将其转换为适当的时区,您可以更轻松地完成工作。
那就是说......从mysql中获取时间时,您可以使用convert_tz
mysql函数将服务器时区的时间转换为UTC。将此UTC时间发送给客户端并将其转换为用户的本地时区。
答案 2 :(得分:0)
尝试这将适用于UTC时间戳
public String getDateStringCurrentTimeZone(long timestamp) {
Calendar calendar = Calendar.getInstance();
TimeZone t = TimeZone.getDefault();
calendar.setTimeInMillis(timestamp * 1000);
calendar.add(Calendar.MILLISECOND, t.getOffset(calendar.getTimeInMillis()));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dateString = sdf.format(calendar.getTime());
return dateString;
}