Gibi tarih formatını alın "Y-m-d H: i: s"

2 Cevap php

Birisi tarih biçimini içeren tarihten itibaren bir dize almak için bir yol bilir mi?

<?php
    $date = date ("2009-10-16 21:30:45");

    // smething like this?
    print date_format ($date);
?>

Ben özel şeyler yapmadan, sunucudan farklı bir zaman dilimi ile tarihi almak için ben yazmıştım bu işlevi, her zamanki optimize etmek istiyorum, çünkü ben bu ask

<?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");
?>

Ben performans nedenleriyle düzenli ifadeler önlemek için umut, ama bu mümkün olup olmadığını bilmiyorum

2 Cevap

Bildiğim kadarıyla ben farkında değilim gibi, geriye doğru çalışma garantili bir yolu yoktur. En iyi yolu, beklenen iyi bilinen biçimleri (örneğin, \d{2,4}[-/]\d{2}[-/]\d{2} "Ymd" için) karşı düzenli ifadeler maç denemek için olabilir ama ben normal ifadeler kullanarak olmadan eşleştirme yapmak için kolay bir yol düşünemiyorum. , Ayrıca çözümlü biçimi mantıklı olduğunu kontrol etmek gerekir, ve 09/03/02, 2009-03-02 olarak temsil edilebilir Mart 2009, 2. gibi belirsiz tarihleri ​​hakkında çok fazla bir şey yapamam 02/03/09, 03/02/09 ya da 09/02/03.

Sen strtotime ile zaman damgası ve ne kadar istediğiniz zaman damgası ile yapmak dize tarih dönüştürebilirsiniz. ;)

<?php
$date = "2009-10-16 21:30:45";
$ts   = strtotime($date);
echo date('Y-m-d', $ts);
?>