我通过HTTP Post从Android发送数据到运行PHP和mysql的服务器。Android用户通过此基础结构共享消息。
我有以下问题:我想显示日期和时间的消息。但我不确定如何正确地做到这一点。如果我通过PHP设置时间/日期(date('Y-m-d H: I:s')),我总是拥有我在PHP服务器上配置的时区。但是如果一个人在其他时区发布消息,他会看到错误的时间,甚至是错误的日期。
所以我认为安卓应用程序必须发送时间+时区到服务器。在Android中,我可以通过
获取时区Calendar cal = Calendar.getInstance();
TimeZone tz = cal.getTimeZone();
所以我可以通过HTTP nameValuePairs发送日期/时间和时区到PHP服务器。但我不确定如何在PHP网站上正确存储它在mysql数据库。
将日期存储为GMT格式,然后在Android中进行翻译。
在php中,您可以使用gmdate('Y-m-d H:i:s')
来设置服务器中的UTC时间,然后将其转换回客户端的时区,如
public static String convertToLocalTime(String UTCtime) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
df.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date;
try {
date = df.parse(UTCtime);
} catch (ParseException e) {
e.printStackTrace();
return "";
}
df = new SimpleDateFormat("d MMM");
DateFormat timeStringPart = new SimpleDateFormat("h:mma");
return df.format(date)+", "+timeStringPart.format(date).toLowerCase();
}
好的经验法则是让你的后端在UTC/GMT中存储所有带有偏移量的内容(如果你的服务器的时区是UTC/GMT, MySQL会自动为你执行此操作。
然后在你的前端,你可以根据用户的语言环境调整所有的时间