0

これは私が達成しようとしていることです:

1) ユーザーがフォームから roster_input を送信します (ここでは入力例として変数を設定しただけです)

2)phpはそれをタイムスタンプに変更し、7500秒を減算します

3)phpは新しい時間を表示しますが、タイムゾーンは異なります

明らかに、私はひどく間違ったことをしています..しかし、日付を扱うのは初めてです!

$roster_input='14:15' ;
$timestamp = strtotime($roster_input) - 7500;

$date = new DateTime($timestamp, new DateTimeZone('Pacific/Nauru'));
echo $date;

また、成功せずに試してみました:

$date = DateTime::createFromFormat('H:i', $timestamp, new DateTimeZone('Pacific/Nauru'));
4

3 に答える 3

1

PHPマニュアルによると

$date = new DateTime(null, new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";

したがって、有効な日付文字列を使用する必要があります。

これは機能します。返却 12:10

$roster_input='14:15' ;

$timestamp = strtotime($roster_input)  - 7500;

$format =  date("H:i", $timestamp );

$date = new DateTime($format, new DateTimeZone('Pacific/Nauru'));
    echo $date->format('H:i') . "\n"; //Note how you echo the result

これは失敗します(あなたの場合のようにタイムスタンプを直接使用します);

$roster_input='14:15' ;

$timestamp = strtotime($roster_input)  - 7500;

$date = new DateTime($timestamp , new DateTimeZone('Pacific/Nauru'));
    echo $date->format('H:i') . "\n";

致命的なエラー: メッセージ「DateTime::_ construct() [datetime.--construct]: Failed to parse time string (1362417000) at position 8 (0): Unexpected character」を含むキャッチされない例外「Exception」 :7 スタック トレース: #0 writecodeonline.com/php(7): DateTime-> _construct('1362417000', Object(DateTimeZone)) #1 {main} が 7 行目にスローされる

タイムスタンプを直接使用するには、これが機能します: 17:10 を返します

$roster_input='14:15' ;

$timestamp = strtotime($roster_input)  - 7500;

$date = new DateTime('@'.$timestamp , new DateTimeZone('Pacific/Nauru')); //Notice '@'.
    echo $date->format('H:i') . "\n";

どちらが目標の結果に適していますか。異なる結果に注意してください 続きを読む: http://www.php.net/manual/en/datetime.construct.php

于 2013-03-04T14:40:28.253 に答える
0

あなたは正しい軌道に乗っているようです。唯一の問題は、オブジェクトを文字列としてダンプできないことです。

最後の行を次のように変更してみてください。

echo $date->format("c");
于 2013-03-04T14:05:44.560 に答える
0

または、元の文字を 3 文字変更するには:

$roster_input='14:15';
$timestamp = strtotime($roster_input) - 7500;
$date = new DateTime("@$timestamp", new DateTimeZone('Pacific/Nauru'));
echo $date->format(DATE_RFC822);
于 2013-03-04T14:52:25.090 に答える