PHPから生成された現在の日付をISO日付形式としてMongoDBコレクションに保存したいと思います。
ISODate("2012-11-02T08:40:12.569Z")
ただし、MongoDBにISODate形式で保存されるような種類のdateをphpで生成することはできません。
これは私がやったことです。
$d = new MongoDate(time());
echo $d;
そしてそれは次のようなものを出力しています、
0.00000000 1353305590
これは私が必要とするフォーマットではありません。これを行う方法?
___toString
_関数を実行するか、sec
フィールドを使用できます
___toString
_はusecsでタイムスタンプを返します。これは、ミリ秒から秒を分離した後、date()
に渡すことができます-ここを読んでください: http://us1.php.net/manual/ en/mongodate.tostring.php
または、私は個人的にmongodbに秒だけを返すことを好みます。これはdate()
に直接プラグインできます-ここを読んでください: http://php.net/manual/en/class.mongodate。 php
また、今のところMongoDate()を生成している場合は、time()を指定する必要はありません。
アイソデートを返すには、次のようにする必要があります。
_echo date(DATE_ISO8601, (new MongoDate())->sec);
_
.。
_$exampleDate = new MongoDate();
echo date(DATE_ISO8601, $exampleDate->sec);
_
編集:ISO日付を保存するには、次の手順を実行する必要があります。
_$mongoDateObject = new MongoDate(strtotime("2012-11-02T08:40:12.569Z"));
_
わかりやすくするために、次のユースケースを考えてみましょう。
簡略化された拡張ISO 8601形式(たとえば、JavascriptのDate.prototype.toISOString()
によって返される)の文字列をPHPのMongoDate
オブジェクトとの間で変換する必要がありますが、その間、最大の精度を維持します。変換。
この形式では、文字列は常に24文字の長さです:YYYY-MM-DDTHH:mm:ss.sssZ
。タイムゾーンは、接尾辞Z
で示されるように、常にゼロUTCオフセットです。
ミリ秒を維持するには、PHPのDateTime
オブジェクトを活用する必要があります。
文字列からMongoDate
へ:
$stringDt = "2015-10-07T14:28:41.545Z";
方法1(date_create_from_format
を使用):
$phpDt = date_create_from_format('Y-m-d\TH:i:s.uP', $stringDt);
$MongoDt = new \MongoDate($phpDt->getTimestamp(), $phpDt->format('u'));
方法2(strtotime
を使用):
$MongoDt= new \MongoDate(strtotime ($stringDt),
1000*intval(substr($stringDt, -4, 3)) // cut msec portion, convert msec to usec
);
MongoDate
から文字列へ:
$MongoDt = new \MongoDate(); // let's take now for example
$stringDt =
substr(
(new \DateTime())
->setTimestamp($MongoDt->sec)
->setTimeZone(new \DateTimeZone('UTC'))
->format(\DateTime::ISO8601),
0, -5) // taking the beginning of DateTime::ISO8601-formatted string
.sprintf('.%03dZ', $MongoDt->usec / 1000); // adding msec portion, converting usec to msec
お役に立てれば。
convert ISO date time in UTC date time here :
$timestamp = $quicky_created_date->__toString(); //ISO DATE Return form mongo database
$utcdatetime = new MongoDB\BSON\UTCDateTime($timestamp);
$datetime = $utcdatetime->toDateTime();
$time=$datetime->format(DATE_RSS);
$dateInUTC=$time;
$time = strtotime($dateInUTC.' UTC');
$dateInLocal = date("d M Y", $time);
echo $dateInLocal; die;