PHP에서 날짜를 타임스탬프로 변환하는 방법
에서 타임스탬프를 취득하려면 어떻게 해야 합니까? 22-09-2008
이 방법은 Windows와 Unix 모두에서 작동하며 표준 시간대를 인식합니다. 이는 날짜를 사용하는 경우 필요할 수 있습니다.
표준 시간대를 신경 쓰지 않거나 서버가 사용하는 표준 시간대를 사용하는 경우:
$d = DateTime::createFromFormat('d-m-Y H:i:s', '22-09-2008 00:00:00');
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093324 (이는 서버의 타임존에 따라 다릅니다.)
어느 타임존을 지정할 경우 EST를 선택합니다(뉴욕과 동일).
$d = DateTime::createFromFormat(
'd-m-Y H:i:s',
'22-09-2008 00:00:00',
new DateTimeZone('EST')
);
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093305
UTC를 사용하는 경우도 있습니다.('GMT'와 동일)
$d = DateTime::createFromFormat(
'd-m-Y H:i:s',
'22-09-2008 00:00:00',
new DateTimeZone('UTC')
);
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093289
그럼에도 불구하고 문자열을 구조화된 데이터로 구문 분석할 때는 항상 엄격한 것이 좋습니다.향후 어색한 디버깅을 방지할 수 있습니다.따라서 항상 날짜 형식을 지정할 것을 권장합니다.
strptime()도 있습니다.이러한 형식은 다음 중 하나입니다.
$a = strptime('22-09-2008', '%d-%m-%Y');
$timestamp = mktime(0, 0, 0, $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900);
API 사용 시:
$dateTime = new DateTime('2008-09-22');
echo $dateTime->format('U');
// or
$date = new DateTime('2008-09-22');
echo $date->getTimestamp();
절차 API에서도 마찬가지입니다.
$date = date_create('2008-09-22');
echo date_format($date, 'U');
// or
$date = date_create('2008-09-22');
echo date_timestamp_get($date);
지원되지 않는 포맷을 사용 중이기 때문에 위의 작업이 실패하면
$date = DateTime::createFromFormat('!d-m-Y', '22-09-2008');
echo $dateTime->format('U');
// or
$date = date_parse_from_format('!d-m-Y', '22-09-2008');
echo date_format($date, 'U');
「 」를 하지 않는 는, 이 점에 주의해 .!
이치노이는 시간을 생략했을 때 자정을 사용하는 첫 번째 4개와는 다릅니다.
또 다른 대안은 API를 사용하는 것입니다.
$formatter = new IntlDateFormatter(
'en_US',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'GMT',
IntlDateFormatter::GREGORIAN,
'dd-MM-yyyy'
);
echo $formatter->parse('22-09-2008');
현지화된 날짜 문자열을 사용하지 않는 한 Date Time을 선택하는 것이 더 쉽습니다.
하세요.strtotime()
(물론 룰이 여기에 있다고는 생각되지 않는다)의 의미를 「알려」하려고 하는 것.
역시 indeed.22-09-2008
는 2008년 9월 22일로 해석될 예정입니다.이것은 유일하게 합리적인 것이기 때문입니다.
좋을까요?08-09-2008
파싱이 되나요?아마도 2008년 8월 9일.
★★는?2008-09-50
PHP의 일부 버전에서는 2008년 10월 20일로 해석됩니다.
요.DD-MM-YYYY
포맷은 @Armin Ronacher가 제공하는 솔루션을 사용하는 것이 좋습니다.
이 방법은 Windows와 Unix 모두에서 작동하며 표준 시간대를 인식합니다. 이는 날짜를 사용하는 경우 필요할 수 있습니다.
표준 시간대를 신경 쓰지 않거나 서버가 사용하는 표준 시간대를 사용하는 경우:
$d = DateTime::createFromFormat('d-m-Y H:i:s', '22-09-2008 00:00:00');
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093324 (이는 서버의 타임존에 따라 다릅니다.)
어느 타임존을 지정할 경우 EST를 선택합니다(뉴욕과 동일).
$d = DateTime::createFromFormat(
'd-m-Y H:i:s',
'22-09-2008 00:00:00',
new DateTimeZone('EST')
);
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093305
UTC를 사용하는 경우도 있습니다.('GMT'와 동일)
$d = DateTime::createFromFormat(
'd-m-Y H:i:s',
'22-09-2008 00:00:00',
new DateTimeZone('UTC')
);
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093289
그럼에도 불구하고 문자열을 구조화된 데이터로 구문 분석할 때는 항상 엄격한 것이 좋습니다.향후 어색한 디버깅을 방지할 수 있습니다.따라서 항상 날짜 형식을 지정할 것을 권장합니다.
mktime 사용:
list($day, $month, $year) = explode('-', '22-09-2008');
echo mktime(0, 0, 0, $month, $day, $year);
strtotime() 함수를 사용하면 날짜를 타임스탬프로 쉽게 변환할 수 있습니다.
<?php
// set default timezone
date_default_timezone_set('America/Los_Angeles');
//define date and time
$date = date("d M Y H:i:s");
// output
echo strtotime($date);
?>
상세정보 : http://php.net/manual/en/function.strtotime.php
온라인 변환 도구: http://freeonlinetools24.com/
여기에서는, 다음과 같은 매우 심플하고 효과적인 솔루션을 사용하고 있습니다.split
그리고.mtime
기능:
$date="30/07/2010 13:24"; //Date example
list($day, $month, $year, $hour, $minute) = split('[/ :]', $date);
//The variables should be arranged according to your date format and so the separators
$timestamp = mktime($hour, $minute, 0, $month, $day, $year);
echo date("r", $timestamp);
그것은 내게는 마법처럼 작용했다.
PHP 함수 사용strtotime()
echo strtotime('2019/06/06');
함수가strptime()
Windows 에서는 동작하지 않습니다.strtotime()
예기치 않은 결과를 반환할 수 있습니다.date_parse_from_format()
:
$date = date_parse_from_format('d-m-Y', '22-09-2008');
$timestamp = mktime(0, 0, 0, $date['month'], $date['day'], $date['year']);
포맷의 용도를 알고 있는 경우strptime
왜냐면strtotime
는 형식을 추측합니다만, 항상 올바른 것은 아닙니다.부터strptime
Windows 에서는 구현되지 않은 커스텀 기능이 있습니다.
반환값은tm_year
1900년! 그리고tm_month
0 ~ 11 입니다.
예제:
$a = strptime('22-09-2008', '%d-%m-%Y');
$timestamp = mktime(0, 0, 0, $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900)
날짜가 예상된 것으로 해석되는지 여부를 확실히 알고 싶다면 다음을 사용할 수 있습니다.DateTime::createFromFormat()
:
$d = DateTime::createFromFormat('d-m-Y', '22-09-2008');
if ($d === false) {
die("Woah, that date doesn't look right!");
}
echo $d->format('Y-m-d'), PHP_EOL;
// prints 2008-09-22
이 경우에는 명백하지만, 예를 들어. 03-04-2008
출신지에 따라서는 4월 3일 또는 3월 4일이 될 수 있습니다.
<?php echo date('M j Y g:i A', strtotime('2013-11-15 13:01:02')); ?>
http://php.net/manual/en/function.date.php
$time = '22-09-2008';
echo strtotime($time);
function date_to_stamp( $date, $slash_time = true, $timezone = 'Europe/London', $expression = "#^\d{2}([^\d]*)\d{2}([^\d]*)\d{4}$#is" ) {
$return = false;
$_timezone = date_default_timezone_get();
date_default_timezone_set( $timezone );
if( preg_match( $expression, $date, $matches ) )
$return = date( "Y-m-d " . ( $slash_time ? '00:00:00' : "h:i:s" ), strtotime( str_replace( array($matches[1], $matches[2]), '-', $date ) . ' ' . date("h:i:s") ) );
date_default_timezone_set( $_timezone );
return $return;
}
// expression may need changing in relation to timezone
echo date_to_stamp('19/03/1986', false) . '<br />';
echo date_to_stamp('19**03**1986', false) . '<br />';
echo date_to_stamp('19.03.1986') . '<br />';
echo date_to_stamp('19.03.1986', false, 'Asia/Aden') . '<br />';
echo date('Y-m-d h:i:s') . '<br />';
//1986-03-19 02:37:30
//1986-03-19 02:37:30
//1986-03-19 00:00:00
//1986-03-19 05:37:30
//2012-02-12 02:37:30
<?php echo date('U') ?>
원하는 경우 MySQL 입력 유형 타임스탬프에 넣습니다.위의 내용은 매우 잘 작동합니다(PHP 5 이상에서만).
<?php $timestamp_for_mysql = date('c') ?>
방법은 다음과 같습니다.
function dateToTimestamp($date, $format, $timezone='Europe/Belgrade')
{
//returns an array containing day start and day end timestamps
$old_timezone=date_timezone_get();
date_default_timezone_set($timezone);
$date=strptime($date,$format);
$day_start=mktime(0,0,0,++$date['tm_mon'],++$date['tm_mday'],($date['tm_year']+1900));
$day_end=$day_start+(60*60*24);
date_default_timezone_set($old_timezone);
return array('day_start'=>$day_start, 'day_end'=>$day_end);
}
$timestamps=dateToTimestamp('15.02.1991.', '%d.%m.%Y.', 'Europe/London');
$day_start=$timestamps['day_start'];
이렇게 하면 사용 중인 날짜 형식을 함수에 알리고 시간대를 지정할 수도 있습니다.
mysql의 날짜를 비교한 결과 문제가 발생했으므로 데이터베이스에 날짜를 저장하도록 설정할 경우 시간/구역에 주의하시기 바랍니다.timestamp
사용.strtotime
. 날짜를 타임스탬프로 변환하기 전에 정확히 동일한 시간/존을 사용해야 합니다.그렇지 않으면 strtotime()은 기본 서버 시간대를 사용합니다.
다음의 예를 참조해 주세요.https://3v4l.org/BRlmV
function getthistime($type, $modify = null) {
$now = new DateTime(null, new DateTimeZone('Asia/Baghdad'));
if($modify) {
$now->modify($modify);
}
if(!isset($type) || $type == 'datetime') {
return $now->format('Y-m-d H:i:s');
}
if($type == 'time') {
return $now->format('H:i:s');
}
if($type == 'timestamp') {
return $now->getTimestamp();
}
}
function timestampfromdate($date) {
return DateTime::createFromFormat('Y-m-d H:i:s', $date, new DateTimeZone('Asia/Baghdad'))->getTimestamp();
}
echo getthistime('timestamp')."--".
timestampfromdate(getthistime('datetime'))."--".
strtotime(getthistime('datetime'));
//getthistime('timestamp') == timestampfromdate(getthistime('datetime')) (true)
//getthistime('timestamp') == strtotime(getthistime('datetime')) (false)
PHP > = 5.3, 7 및8 의 경우는, 이것이 동작하는 경우가 있습니다.
$date = date_parse_from_format('%Y-%m-%d', "2022-11-15"); //here you can give your desired date in desired format.
//just need to keep in mind that date and format matches.
$timestamp = mktime(0, 0, 0, $date['month'], $date['day'], $date['year'] + 2000); //this will return the timestamp
$finalDate= date('Y-m-d H:i:s', $timestamp); //now you can convert your timestamp to desired dateTime format.
해당 형식의 날짜가 이미 있는 경우 PHP의 "strtotime" 함수만 호출하면 됩니다.
$date = '22-09-2008';
$timestamp = strtotime($date);
echo $timestamp; // 1222041600
또는 한 줄로:
echo strtotime('22-09-2008');
짧고 단순하다.
UTC datetime을 변환하는 경우)2016-02-14T12:24:48.321Z
타임스탬프를 작성하려면 , 다음의 순서에 따릅니다.
function UTCToTimestamp($utc_datetime_str)
{
preg_match_all('/(.+?)T(.+?)\.(.*?)Z/i', $utc_datetime_str, $matches_arr);
$datetime_str = $matches_arr[1][0]." ".$matches_arr[2][0];
return strtotime($datetime_str);
}
$my_utc_datetime_str = '2016-02-14T12:24:48.321Z';
$my_timestamp_str = UTCToTimestamp($my_utc_datetime_str);
언급URL : https://stackoverflow.com/questions/113829/how-to-convert-date-to-timestamp-in-php
'source' 카테고리의 다른 글
mysql db를 프로그래밍 방식으로 복제하는 방법 (0) | 2022.10.14 |
---|---|
Http ServletRequest가 JSON POST 데이터를 가져옵니다. (0) | 2022.10.14 |
Algid 구문 분석 오류, 시퀀스가 아닙니다. (0) | 2022.10.14 |
Javascript에서 선택할 옵션 추가 (0) | 2022.10.13 |
UNIQURE 제약조건은 필드에 INDEX를 자동으로 생성합니까? (0) | 2022.10.13 |