以下のような日付形式を取得し、「Y-M-DのH:I:s」はPHPの日から
-
13-09-2019 - |
質問
誰かが日付の書式を含む日付から文字列を取得する方法を知っていますか?
<?php
$date = date ("2009-10-16 21:30:45");
// smething like this?
print date_format ($date);
?>
私は私が書いたこの機能を最適化したいと思いますので、私は
特定の物事を行うことなく、サーバーから別のタイムゾーンで日付を取得するには通常、これを頼みます<?php
function get_timezone_offset ($timezone, $date = null, $format = null, $offset_timezone = null) {
if ($date == null) $date = date ($format);
if ($offset_timezone == null) $offset_timezone = date_default_timezone_get ();
if ($format == null) $format = "Y-m-d H:i:s";
// I'd like to find a way that can avoid me to write $format and get it directly from the date i pass, but I don't know a particular method can do it
// if ($format == null) $format = date_format ($date);
$date_time = new DateTime ($date, new DateTimeZone ($offset_timezone));
$date_time->setTimeZone (new DateTimeZone ($timezone));
return $date_time->format ($format);
}
print get_timezone_offset ("Europe/Rome");
print get_timezone_offset ("Europe/Rome", date ("Y-m-d H:i:s"));
print get_timezone_offset ("Europe/Rome", date ("Y-m-d H:i:s"), "Y-m-d H:i:s");
print get_timezone_offset ("Europe/Rome", "2009-10-16 21:30:45", "Y-m-d H:i:s", "America/New_York");
?>
私は、パフォーマンス上の理由から、正規表現を避けるために願っていますが、これが可能かどうかはわからない。
解決
私の知る限り承知しているように、後方作業のない確実な方法はありません。最良の方法は、予想される、よく知られたフォーマットに対して正規表現に一致するようにしようとする(「Y-M-D」のために、例えば\d{2,4}[-/]\d{2}[-/]\d{2}
)かもしれないが、私は正規表現を使用せずにマッチングを行うための簡単な方法を考えることはできません。 09/03/02
、2009-03-02
、02/03/09
、03/02/09
、あるいは09/02/03
として表現することができた、あなたはまた、解析されたフォーマットが理にかなっていることを確認しなければならないでしょう、そしてあなたは、2009年3月の第2回のようなあいまいな日付について多くを行うことはできません。
他のヒント
あなたはのstrtotime にしてタイムスタンプと、これまで何をしたいのタイムスタンプを行うには、文字列の日付を変換することができます。 ;)
<?php
$date = "2009-10-16 21:30:45";
$ts = strtotime($date);
echo date('Y-m-d', $ts);
?>
PHP日付()関数は、より読みやすく、日付と時刻のタイムスタンプをフォーマットします。あなたのプロジェクトのためにこのコードを試してみてください、
<?php
$date=date_create('2014-10-20');
date_time_set($date,12,20,55);
echo date_format($date,'Y-m-d H:i:s');
?>
私はそれが遅れて知っているが、それはやるのがベストでしょう。
$date = date("Y-m-d");
所属していません StackOverflow