与PHP/MySQL服务器通信-正确的时区



我通过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会自动为你执行此操作。

然后在你的前端,你可以根据用户的语言环境调整所有的时间

相关内容

  • 没有找到相关文章

最新更新