2

日付(サーバー時間)とともに将来のイベントを表示するページがあります。ユーザー時間で日付を表示する方法が必要です。

例:
10 月 26 日 13:48:23 (サーバー)
10 月 26 日 14:48:23 (ユーザー時間 (UTC +1)) -> イベント情報

私がこれまでに持っているもの:

<?php
    $sql=mysql_query("SELECT * FROM table") or die("Come back later");
    while($row=mysql_fetch_array($sql)) {
        echo date('M, d H:i:s', strtotime ($row['date'])).' -> '.$row['info'];
    }
?>

違いがあるので、ユーザーのタイムゾーンを検出したいと思います。

ありがとうございました。

編集 mysql_* を使用すべきではないことはわかっています

4

3 に答える 3

1

JavaScriptでユーザーのタイムゾーンへの変換を行うことに問題がない場合は、次のようにすることができます。

PHP

<?php
    $sql=mysql_query("SELECT * FROM table") or die("Come back later");
    while($row=mysql_fetch_array($sql)) {
        echo '<span class="date">' . date('M, d H:i:s', strtotime ($row['date'])) . ' UTC</span> -> '.$row['info'];
    }
?>

JavaScript(読みやすさのためのjQueryを使用)

$(function(){
    $('.date').each(function(){
        var $this = $(this);

        // Parse the date string (the format you've given will 
        // work, and the added UTC above will give JavaScript 
        // some context)
        var dateVal = new Date($this.text());

        // JavaScript will convert it to the user's timezone when 
        // stringifying it (helped by the server timezone specified
        // in the PHP.
        $this.text(dateVal.toString()); 
    });
});

日付を次の形式でレンダリングする場合は、次のOct, 26 13:48:23ようにします。

var dateString = dateVal.toLocaleString();
var parts = /^\w+ (\w+ \d{1,2}) \d{4} (\d{2}:\d{2}:\d{2})/.exec(dateString);
dateString = parts[1] + ' ' + parts[2];

次に$this.text(dateString);、それをdomに注入するために使用します。

于 2012-10-26T14:56:19.873 に答える
0

この日付からDateTimeオブジェクトを作成し、そのオブジェクトにDateTimeZoneを適用する必要があります。

于 2012-10-26T14:33:55.273 に答える
0

ユーザーからタイムゾーンを取得する必要があります。

これは、ユーザーが選択して送信できるタイムゾーンのドロップダウンを提供することで実現できます。これをもう少しユーザーフレンドリーにするために、いくつかの geoip 関数を使用して国と地域を検出し、ユーザーのデフォルトのタイムゾーンを決定することができます。IP による場所を維持することは 100% 正確ではありませんが、代わりに、ユーザーがどこにいる可能性があるかについての知識に基づいた推測です.

または、ajax を使用してタイムゾーンをサーバーに送信し、それに応じて更新することもできます。

于 2012-10-26T14:40:39.670 に答える