strtotime()은 dd/mm/YYY 형식에서 작동하지 않습니다.
정말 마음에 들어요.strtotime()기능하지만 사용자 설명서에서 지원되는 날짜 형식에 대한 완전한 설명을 제공하지 않습니다. strtotime('dd/mm/YYYY')동작하지 않는다.mm/dd/YYYY포맷합니다.
다음 날짜에 데이트가 있는 경우dd/mm/YYYY포맷, 변환 방법YYYY-mm-dd를 사용하여 할 수 있습니다.explode()하지만 더 나은 해결책이 있을 것 같아요.
간단한 솔루션은 다음과 같습니다.
$date = '25/05/2010';
$date = str_replace('/', '-', $date);
echo date('Y-m-d', strtotime($date));
결과:
2010-05-25
m/d/y 또는 d-m-y 형식의 날짜는 다양한 구성요소 사이의 구분자를 보면 명확해진다. 구분자가 슬래시(/)인 경우 미국식 m/d/y를 가정하고 구분자가 대시(-) 또는 점(.)인 경우 유럽식 d-m-y 형식을 가정한다.
DateTime::createFromFormat을 사용하여 커스텀 포맷(PHP 5.3 기준)에서 날짜를 해석할 수 있습니다.
$timestamp = DateTime::createFromFormat('!d/m/Y', '23/05/2010')->getTimestamp();
(애드사이드: The!는, Unix 타임스탬프에 미지정치를 리셋 하기 위해서 사용합니다(시각은 자정이 됩니다).
PHP 5.3을 사용하지 않거나 사용할 수 없는 경우 strtotime이 허용하는 사용 가능한 날짜/시간 형식의 전체 목록이 날짜 형식 매뉴얼 페이지에 나열됩니다.이 페이지는 ...라는 사실을 더욱 상세하게 기술하고 있다.m/d/Y에 대해 추론되다d/m/Y(단, 여기 답변에서 언급한 바와 같이d-m-Y,d.m.Y또는d\tm\tY).
예전에도 퀵키에 의존했었는데str_replace다른 답변에서 언급되고 날짜 문자열을 다음과 같은 다른 형식으로 자동 변환합니다.
$subject = '23/05/2010';
$formatted = vsprintf('%3$04d/%2$02d/%1$02d', sscanf($subject,'%02d/%02d/%04d'));
$timestamp = strtotime($formatted);
이것은 많은 문제에 대한 좋은 해결책입니다.
function datetotime ($date, $format = 'YYYY-MM-DD') {
if ($format == 'YYYY-MM-DD') list($year, $month, $day) = explode('-', $date);
if ($format == 'YYYY/MM/DD') list($year, $month, $day) = explode('/', $date);
if ($format == 'YYYY.MM.DD') list($year, $month, $day) = explode('.', $date);
if ($format == 'DD-MM-YYYY') list($day, $month, $year) = explode('-', $date);
if ($format == 'DD/MM/YYYY') list($day, $month, $year) = explode('/', $date);
if ($format == 'DD.MM.YYYY') list($day, $month, $year) = explode('.', $date);
if ($format == 'MM-DD-YYYY') list($month, $day, $year) = explode('-', $date);
if ($format == 'MM/DD/YYYY') list($month, $day, $year) = explode('/', $date);
if ($format == 'MM.DD.YYYY') list($month, $day, $year) = explode('.', $date);
return mktime(0, 0, 0, $month, $day, $year);
}
STRTOTIME 기입 메모:
m/d/y 또는 d-m-y 형식의 날짜는 다양한 구성요소 사이의 구분자를 보면 명확해진다. 구분자가 슬래시(/)인 경우 미국식 m/d/y를 가정하고 구분자가 대시(-) 또는 점(.)인 경우 유럽식 d-m-y 형식을 가정한다.
그것은 저것만큼 간단하다.
$srchDate = date_format(date_create_from_format('d/m/Y', $srchDate), 'Y/m/d');
이거면 될 거야.String을 커스텀 날짜 형식으로 변환하면 String의 원래 형식을 PHP로 지정할 수 있습니다.이제 날짜 형식이므로 MySQL에서 사용하는 것과 동일한 PHP의 기본 날짜 형식으로 변환할 수 있습니다.
아마 가장 빠를 것이다
false!== ($date !== $date=preg_replace(';[0-2]{2}/[0-2]{2}/[0-2]{2};','$3-$2-$1',$date))
형식이 적절한 것 같지 않으면 false를 반환하지만 날짜가 유효한지 여부를 확인하지 않습니다.
을 ddmmyyyy 형식으로 변환하려고 .date("Y-m-d", 직접 하면 동작하지 않습니다.ddmmyy =date('dmy')
yyy-mm-dd 형식이어야 한다는 것을 깨달았습니다.서브스트링을 사용하여 정리하다
$strParam = '20'.substr($_GET['date'], 4, 2).'-'.substr($_GET['date'], 2, 2).'-'.substr($_GET['date'], 0, 2);
그 후 로 넘어갔다.date("Y-m-d",strtotime($strParam));
성공했어!
나는 더 나은 해결책을 찾지 못했다.하시면 됩니다.explode(),preg_match_all() 등등.
저는 이렇게 스태틱 도우미 기능이 있습니다.
class Date {
public static function ausStrToTime($str) {
$dateTokens = explode('/', $str);
return strtotime($dateTokens[1] . '/' . $dateTokens[0] . '/' . $dateTokens[2]);
}
}
아마 더 좋은 이름이 있을 거예요. 하지만 저는 이 이름을ausStrToTime()왜냐하면 호주의 데이트(호주인이기 때문에 자주 상대하고 있습니다)에 대응하고 있기 때문입니다.더 좋은 이름이 표준화된 이름일 수도 있지만, 그게 뭔지는 잘 모르겠어요.
데이터베이스에서 이 값을 가져오고 있습니까?경우 하는 것을 (「」를 사용합니다).date_format"mysql" " ) 。그렇지 않은 경우 strtotime이 dd/mm/yyy 값을 인식하지 못하는 것 같기 때문에 값을 폭발시키는 것이 최선일 수 있습니다.
만약 당신이 그것 dd/mm/YYYY에, 그래서: 할 수 있다.
$regex = '#([/d]{1,2})/([/d]{1,2})/([/d]{2,4})#';
$match = array();
if (preg_match($regex, $date, $match)) {
if (strlen($match[3]) == 2) {
$match[3] = '20' . $match[3];
}
return mktime(0, 0, 0, $match[2], $match[1], $match[3]);
}
return strtotime($date);
그것은 형태 d/m/YY 또는dd/mm/YYYY(2의 혹은 그런 조건들의 조합)의 날짜에 잘 어울린다...
만약 당신이 이상의 구분 기호를 제공하고 싶습니다./당신에게:regex을 바꿀 수 있다.
$regex = '#([\d]{1,2})[/-]([\d]{1,2})[/-]([\d]{2,4})#';
에 이 에 원하는 를 넣으세요.[/-] - .)
이 해결 방법과 좀 더 우아한 것을 폭발시키보다 더 간단하다.
$my_date = str_replace("/", ".", $my_date);
$my_date = strtotime($my_date);
$my_date = date("Y-m-d", $my_date);
당신은 당신이 형식은 날짜에서 알 계획인데, 백 슬래시로 와서 그들은 모든 정류장과 한국이 유럽으로 strtotime에 의해 치료를 받다 교체되지 않아도 된다.
이 작은
date('Y-m-d H:i:s', strtotime( str_replace('/', '-', $from_date ) ) );
가장 간단한 해결책은 이:.
$date = '07/28/2010';
$newdate = date('Y-m-d', strtotime($date));
하더라도 0은 거기 있어 나는 사용하고 있는 이가 해결책입니다.
<?php
$date = '05/05/2017';
$date = str_replace('/', '-', $date);
$date = date('Y-m-d', strtotime($date));
echo $date;
?>
달러date_info='20/02/2019, 반향 date('Y-m-d의, strtotime(str_replace('/'는, '-의달러 date_info)));.
만약 아무것도 소용이 없었단다, 이 해 보세요.
$date = '25/05/2010'; //dd/mm/YYYY
$dateAr = explode('/',);
$date = $dateAr[2].'-'.$dateAr[1].'-'.$dateAr[0]; //YYYY-mm-dd
{{ date('d F Y',strtotime($a->dates)) }}
대체 사용laravel
\Carbon\Carbon::parse($a->dates)->format('d F Y') }}
언급URL:https://stackoverflow.com/questions/2891937/strtotime-doesnt-work-with-dd-mm-yyyy-format
'programing' 카테고리의 다른 글
| "optimize table tablename" 실행 후 테이블 크기가 증가했습니다. (0) | 2022.09.21 |
|---|---|
| Python에서 예외를 인쇄하려면 어떻게 해야 합니까? (0) | 2022.09.21 |
| 사용자가 로그인하고 있는지 확인하는 방법(user.is_interated를 올바르게 사용하는 방법) (0) | 2022.09.21 |
| 다른 경우 트리거(사이) (0) | 2022.09.21 |
| set Timeout 콜백에 올바른 "이" 컨텍스트를 전달하시겠습니까? (0) | 2022.09.21 |