밀리 초에서 날짜 형식 mdY H : i : su 가져 오기 오기
밀리 초에서 마이크로 초를 포함하여 형식이 지정된 날짜를 가져 오려고합니다.
유일한 문제는 계속 000000
date("m-d-Y H:i:s.u", $milliseconds/1000);
전의. 07-28-2013 11 : 26 : 14.000000
php.net 말한다 :
마이크로 초 (PHP 5.2.2에 추가됨). 참고
date()
항상 생성000000
은 정수 매개 변수를 사용하기 때문에 반면,DateTime::format()
경우 지원 micro-않습니다DateTime
micro-만들었습니다.
간단하게 사용하십시오.
$micro_date = microtime();
$date_array = explode(" ",$micro_date);
$date = date("Y-m-d H:i:s",$date_array[1]);
echo "Date: $date:" . $date_array[0]."<br>";
dateTime()
참조 된 권장 및 사용 클래스 :
$t = microtime(true);
$micro = sprintf("%06d",($t - floor($t)) * 1000000);
$d = new DateTime( date('Y-m-d H:i:s.'.$micro, $t) );
print $d->format("Y-m-d H:i:s.u"); // note at point on "u"
참고 사항 u
은 마이크로 초입니다 (1 초 = 1000000µs).
php.net의 또 다른 예 :
$d2=new DateTime("2012-07-08 11:14:15.889342");
의 기준 dateTime()
에 php.net
저자에게는 짧고 단순화 된 질문에 답했습니다. 작성자에 대한 자세한 정보 는 밀리 초에서 날짜 형식 mdY H : i : su 가져 오기 를 참조하십시오 .
입력 형식 으로이 작업을 쉽게 수행 할 수 있습니다 U.u
.
$now = DateTime::createFromFormat('U.u', microtime(true));
echo $now->format("m-d-Y H:i:s.u");
그러면 다음과 같은 출력이 생성됩니다.
04-13-2015 05:56:22.082300
날짜 형식에 대한 PHP 매뉴얼 페이지에서 :
- U = Unix Epoch 이후 초
- u = 마이크로 초
http://php.net/manual/en/function.date.php
내 원래의 결함의 결함을 지적한 giggsey에게 감사드립니다 number_format()
. 줄에 추가 하면 정확한 두 번째 경우가 수정됩니다. 안타깝게도 더 이상 우아하게 느껴지지 않는 ...
$now = DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''));
http://php.net/manual/en/function.number-format.php
DaVe에 대한 응답으로 존재에 대한 메모.
일반적으로 createFromFormat()
방법은 지정되지 않은 경우 현지 언어를 사용합니다.
http://php.net/manual/en/datetime.createfromformat.php
그러나 여기에 설명 된 기술 microtime()
은 Unix Epoch (1970 년 1 월 1 일 00:00:00 GMT) 이후 경과 된 시간 (초)을 반환 하는 DateTime을 초기화하는 것 입니다.
http://php.net/manual/en/function.microtime.php
즉, DateTime 개체가 암시 적으로 UTC로 초기화되어 경과 시간을 추적하려는 서버 내부 작업에 적합합니다.
특정 고유의 시간을 표시해야하는 경우 그에 따라 설정해야합니다. 그러나 이것은 논의 된 이유 때문에 ( 의 세 번째 회차 변수를 사용 하지 않음) 후 별도의 단계로 수행해야합니다 createFromFormat()
.
이 setTimeZone()
방법을 사용하여 요구 사항을 사용할 수 있습니다.
http://php.net/manual/en/datetime.settimezone.php
예로서 :
$now = DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''));
echo $now->format("m-d-Y H:i:s.u") . '<br>';
$local = $now->setTimeZone(new DateTimeZone('Australia/Canberra'));
echo $local->format("m-d-Y H:i:s.u") . '<br>';
다음 출력을 생성합니다.
10-29-2015 00:40:09.433818
10-29-2015 11:40:09.433818
mysql에 입력하려는 시간 형식이 다음과 같아야합니다.
format("Y-m-d H:i:s.u")
여기에 약간 더 짧은 접근 방식이 있습니다. 고정밀 숫자 날짜 / 시간을 생성하는 대신 마이크로 초 값을 대체로 변환하고 0
다음 날짜 / 시간을 생성하는 추가합니다. 확장 된 길이 매개 변수를 조정하여 소수 자릿수를 쉽게 독성 수 있습니다. 여기서는 4
밀리 초를 얻는 데 사용 하지만 7
마이크로 초를 얻는 데 사용할 수 있습니다 .
$t = explode(" ",microtime());
echo date("m-d-y H:i:s",$t[1]).substr((string)$t[0],1,4);
의 microtime () 값의 경우 0.98236000 1407400573
반환합니다 08-07-14 01:08:13.982
.
나는 사용하고있다
echo date("Y-m-d H:i:s.").gettimeofday()["usec"];
output: 2017-09-05 17:04:57.555036
echo date('m-d-Y H:i:s').substr(fmod(microtime(true), 1), 1);
예제 출력 :
02-06-2019 16:45:03.53811192512512
소수점 이하 자릿수를 제한해야하는 경우 아래 줄 (credit mgutt)이 좋은 대안이 될 것입니다. (아래 코드에서 6은 소수점 이하 자릿수를 6으로 제한합니다.)
echo date('m-d-Y H:i:').sprintf('%09.6f', date('s')+fmod(microtime(true), 1));
예제 출력 :
02-11-2019 15:33:03.624493
(new Date()).toISOString()
어떤 이유로 JavaScript와 같은 날짜 형식을 지정 하려면 PHP에서 다음 과 같이 할 수 있습니다.
$now = microtime(true);
gmdate('Y-m-d\TH:i:s', $now).sprintf('.%03dZ',round(($now-floor($now))*1000));
샘플 출력 :
2016-04-27T18:25:56.696Z
정수를 빼도 소수점 이하 자릿수의 정확도가 떨어지지 않음을 증명하기 위해 :
>>> number_format(123.01234567890123456789,25)
=> "123.0123456789012408307826263"
>>> number_format(123.01234567890123456789-123,25)
=> "0.0123456789012408307826263"
PHP 는 소수점 자리를 반올림했지만 두 경우 모두 같은 방식으로 반올림했습니다.
약간 더 우아하고 간단하다고 생각되는 또 다른 방법은 다음과 같습니다.
echo date('Y-m-d-H:i:s.').preg_replace("/^.*\./i","", microtime(true));
// Procedural
$fineStamp = date('Y-m-d\TH:i:s') . substr(microtime(), 1, 9);
echo $fineStamp . PHP_EOL;
// Object-oriented (if you must). Still relies on $fineStamp though :-\
$d = new DateTime($fineStamp);
echo $d->format('Y-m-d\TH:i:s.u') . PHP_EOL;
이것은 ArchCodeMonkey의 답변을 기반으로합니다.
하지만 빠르게 작동하는 것을 원하면 간단합니다.
function DateTime_us_utc(){
return DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''));
}
function DateTime_us(){
$now = DateTime_us_utc();
return $now->setTimeZone(new DateTimeZone(date_default_timezone_get()));
}
그래서 나를 위해
$now = DateTime_us();
$now->format("m-d-Y H:i:s.u");
문서는 다음과 같이 말합니다.
마이크로 초 (PHP 5.2.2에 추가됨). date ()는 정수 매개 변수를 사용하므로 항상 000000을 생성하지만 DateTime :: format ()은 마이크로 초를 지원합니다.
즉, 대신 DateTime을 사용하십시오.
이제 PHP 7.0 이상으로 다음을 수행 할 수 있습니다.
$dateString = substr($millseconds_go_here,0,10);
$drawDate = new \DateTime(Date('Y-m-d H:i',$dateString));
$drawDate->setTimezone(new \DateTimeZone('UTC'));
다음을 순서대로 수행합니다.
Date()
날짜를 처리 할 수 있도록 문자열에서 마지막 4 개의 0을 잘라냅니다 .- date를 사용하여 밀리 초를 DateTime이 이해할 수있는 날짜 시간 문자열로 형식화합니다.
DateTime()
그런 다음 현재있는 시간대를 수정할 수 있지만 함수와 클래스date_default_timezone_set("Timezone");
를 사용하기 전에 설정되어 있는지 확인하십시오DateTime()
.DateTime()
클래스 나 함수를 사용할 때 올바른 시간대에 있는지 확인하려면 클래스에서 생성자를 사용하는 것이 좋습니다 .
PHP 7.1부터 간단하게 다음과 같이 할 수 있습니다.
$date = new DateTime( "NOW" );
echo $date->format( "m-d-Y H:i:s.u" );
다음과 같이 표시됩니다.
04-11-2018 10:54:01.321688
@ArchCodeMonkey 답변을 기반으로합니다.
당신이 경우 declare(strict_types=1)
당신은 문자열에 두 번째 인수를 캐스팅해야한다
Carbon을 사용하는 경우 정의 된 사양 "RFC3339_EXTENDED"를 사용할 수 있습니다. 또는 사용자 정의하십시오.
Carbon::RFC3339_EXTENDED = 'Y-m-d\TH:i:s.vP';
참고 URL : https://stackoverflow.com/questions/17909871/getting-date-format-mdy-his-u-from-milliseconds
'IT' 카테고리의 다른 글
자바에서 적으로 메서드를 호출하는 방법 (0) | 2020.08.14 |
---|---|
SQL Server의 IsNull () 함수에 해당하는 Oracle은 무엇입니까? (0) | 2020.08.14 |
ASP.NET Web API가 항상 JSON을 반환하도록 강제하는 방법은 무엇입니까? (0) | 2020.08.14 |
시퀀스에 둘 이상의 요소가 있습니다. (0) | 2020.08.14 |
WPF 별은 무엇을 소유하고 있는지 (Width = "100 *") (0) | 2020.08.14 |