UNIXタイムスタンプをフォーマットされた日付文字列に変換する


183

PHPを使用して、UNIXタイムスタンプを次のような日付文字列に変換したいと思います。 2008-07-17T09:24:17Z

などのタイムスタンプをどのように変換13336994392008-07-17T09:24:17Zますか?

回答:


321

gmdateこのようにしてみてください:

<?php
$timestamp=1333699439;
echo gmdate("Y-m-d\TH:i:s\Z", $timestamp);
?>

53
gmdate()GMTで日付/時刻を返すことはありません。date()ローカルの日付/時刻を返します。
Matt K

5
上記のコメントは、このコンテキストでは意味がありません。回答に示されているように、2番目のパラメーターをタイムスタンプとして日付に使用すると、ローカルのタイムゾーンで日付が出力されません。タイムゾーン情報を無視して日付が出力されます。タイムスタンプにタイムゾーン情報がないためです。2番目のタイムスタンプパラメータが1333699439のgmdateと日付は、同じ日付時刻を出力します。
Tinus Tate

1
@MattK:ZはUTCを示すため、これは理にかなっています。Tinus:Unixタイムスタンプにはタイムゾーンオフセットが含まれていません。dateそして、gmdateの出力は(少なくとも* nixの上で)TZ変数に基づいて異なります
ゲルトファンデンベルグ

これを確認するには、phpzag.com / convert
Laeeq

また、この回答に反対の問題の解決策(フォーマットされた日付をUNIX時間に変換する)が含まれているとよいでしょう。
OlleHärstedt、2018

117

日付関数を使用する date ( string $format [, int $timestamp = time() ] )

date('c',time())ISO 8601日付に変換する形式として使用(PHP 5で追加)-2012-04-06T12:45:47+05:30

date("Y-m-d\TH:i:s\Z",1333699439)取得するために使用2012-04-06T13:33:59Z

日付関数がサポートする形式の一部を以下に示します

<?php
$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                         // 03.10.01
$today = date("j, n, Y");                       // 10, 3, 2001
$today = date("Ymd");                           // 20010310
$today = date('h-i-s, j-m-y, it is w Day');     // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // it is the 10th day.
$today = date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:18 m is month
$today = date("H:i:s");                         // 17:16:18
?>

特定のタイムスタンプを「c」で変換するにはどうすればよいですか?例:1333699439
Utku Dalmaz

これは機能しませんdate( "Ymd \ TH:i:s \ Z"、1333699439)2012-04-06EDT04:03:59-14400
Utku Dalmaz

@Ahmet-文字列を定義する際の二重引用符と単一引用符の使用に注意してください
Mark Ba​​ker

1
@ user2060451バックスラッシュが前に付いているものはすべて、結果の時間文字列でリテラル文字として表示されます
verbumSapienti

1
@ user2060451:ZはUTC時間を示すことになっています(この場合、gmdateを使用する必要があります...)お気に入りの研究リソースのISO8601情報を確認してください。
Gert van den Berg

56

PHP5.3を使用している場合、日付を処理する最新の方法は、ネイティブのDateTimeクラスを使用することです。現在の時刻を取得するには、電話するだけです

$currentTime = new DateTime();

特定のタイムスタンプからDateTimeオブジェクトを作成するには(つまり、現在ではない)

$currentTime = DateTime::createFromFormat( 'U', $timestamp );

フォーマットされた文字列を取得するには、次に呼び出すことができます

$formattedString = $currentTime->format( 'c' );

参照してくださいここのマニュアルページを


1
これで特定のタイムスタンプをどのように変換できますか?例:1333699439
Utku Dalmaz

@Norseもちろん私は彼の投稿を読みました。彼が必要とするすべての情報は私の投稿にありました。彼がしなければならなかったのは、DateTimeオブジェクトのPHPドキュメントを読むことだけでした。投稿を編集してわかりやすくしました。DateTimeオブジェクトはPHPを使用する方法であり、初心者にはそれを使用することをお勧めします。まだ、その答えを提供してくれたのは私だけです。ところで、私はあなたのコメントが少し攻撃的であり、SOの精神ではないことに気づきます。
liquorvicar

@Ahmetvardar私の編集を参照してください。これはすべて、リンクを提供したPHPドキュメントにあります。DateTimeオブジェクトの使用を開始することを強くお勧めします。タイムゾーンなどの日付/時刻に優れたサポートを提供します
liquorvicar

18

正しい結果を得るには、デフォルトのタイムゾーンを設定することが非常に重要です

<?php
// set default timezone
date_default_timezone_set('Europe/Berlin');

// timestamp
$timestamp = 1307595105;

// output
echo date('d M Y H:i:s Z',$timestamp);
echo date('c',$timestamp);
?> 

オンライン変換ヘルプ:http : //freeonlinetools24.com/timestamp


2
ISO8601ではZ、UTC時間であることを示すために使用されているため、タイムゾーンをUTC
Gert van den Berg

11
<?php
$timestamp=1486830234542;
echo date('Y-m-d H:i:s', $timestamp/1000);
?>

6
分割部分なしで動作します。1970年にそれ以外の場合は、日付のデフォルト
Script47


1

この会話の情報がとても役に立ったので、MySQLデータベースと小さなPHPのタイムスタンプを使用して、どのようにそれを理解したかを追加したかっただけです。

 <?= date("Y-m-d\TH:i:s\+01:00",strtotime($column['loggedin'])) ?>

出力は:2017-03-03T08:22:36 + 01:00

ステューさん、ありがとうございます。私にとってはユーレカでした。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.