Связь с сервером PHP / MySQL - правильный часовой пояс - PullRequest
2 голосов
/ 28 декабря 2011

Я отправляю данные с Android через HTTP Post на сервер с PHP и mysql.Пользователи Android обмениваются сообщениями через эту инфраструктуру.

У меня следующая проблема: я хочу отображать день и время сообщений.Но я не уверен, как это сделать правильно.Если я устанавливаю время / дату с помощью PHP (date ('Ymd H: i: s')), у меня всегда есть часовой пояс, который я настроил на своем PHP-сервере.Но парень, отправляющий сообщение из другого часового пояса, увидит неправильное время или даже неправильную дату своего поста.

Так что я думаю, что приложение для Android должно отправлять время + часовой пояс на сервер.В Android я могу получить часовой пояс через:

Calendar cal = Calendar.getInstance();
TimeZone tz = cal.getTimeZone();

Так что я могу отправить дату / время и часовой пояс через HTTP nameValuePairs на сервер PHP.Но я не уверен, что нужно делать на сайте PHP, чтобы правильно хранить его в базе данных mysql.

Ответы [ 3 ]

2 голосов
/ 28 декабря 2011

Сохраните ваши даты как GMT, а затем переведите их в Android.

1 голос
/ 28 декабря 2011

В 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();

}
0 голосов
/ 28 декабря 2011

Хорошее эмпирическое правило: ваш бэкэнд должен хранить все в UTC / GMT со смещением (MySQL сделает это автоматически для вас, если часовой пояс вашего сервера UTC / GMT.

Затем в вашем интерфейсе вы можете настроить всераз исходя из локали пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...