PHP 날짜부터 "YMD H : I : S"와 같은 날짜 형식 가져 오기
-
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");
?>
공연의 이유로 정기적 인 표현을 피하고 싶지만 이것이 가능한지 모르겠습니다.
해결책
내가 아는 한, 뒤로 작업하는 방법은 없습니다. 가장 좋은 방법은 예상되는 잘 알려진 형식에 대해 정규 표현을 일치시키는 것입니다 (예 : \d{2,4}[-/]\d{2}[-/]\d{2}
"YMD"의 경우) 그러나 정규 표현식을 사용하지 않고 일치하는 쉬운 방법을 생각할 수 없습니다. 또한 구문 분석 형식이 의미가 있는지 확인해야하며 2009 년 3 월 2 일과 같은 모호한 날짜에 대해 많이 할 수 없습니다. 09/03/02
, 2009-03-02
, 02/03/09
, 03/02/09
, 또는 09/02/03
.
다른 팁
문자열 날짜를 timestamp로 변환 할 수 있습니다 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