오늘 자정에 PHP에서 타임 스탬프를 얻는 방법은 무엇입니까? 월요일 오후 5 시라고 말하고 이미 발생한 월요일 (오늘) 자정 (오전 12시)의 타임 스탬프를 원합니다.
감사합니다
오늘 자정에 PHP에서 타임 스탬프를 얻는 방법은 무엇입니까? 월요일 오후 5 시라고 말하고 이미 발생한 월요일 (오늘) 자정 (오전 12시)의 타임 스탬프를 원합니다.
감사합니다
답변:
$timestamp = strtotime('today midnight');
PHP가 제공하는 기능을 살펴볼 수 있습니다 : http://php.net/datetime
$timestamp = strtotime('today');
자정입니다. 그러나 pssst 위의 질문에 대한 답변으로 더 멋져 보입니다;)
strtotime('today+00:00')
.
strtotime ()이 가지고있는 32 비트 제한을 넘어서는 날짜에 문제가 없기 때문에 새로운 PHP DateTime 객체를 사용해야한다고 생각합니다. 다음은 오늘 자정에 날짜를 얻는 방법의 예입니다.
$today = new DateTime();
$today->setTime(0,0);
또는 PHP 5.4 이상을 사용하는 경우 다음과 같이 할 수 있습니다.
$today = (new DateTime())->setTime(0,0);
그런 다음을 사용 echo $today->format('Y-m-d');
하여 개체 출력 형식을 가져올 수 있습니다 .
new DateTime('today midnight')
. 이는 의도를 더 명확하게 만듭니다 (물론 맛의 문제입니다).
$today = new DateTime('today')
new Carbon('today midnight')
있고 당신은 ->subDays(6)
. carbon.nesbot.com
태양이 발 바로 아래를 지나가는 가장 최근의 천체 사건의 시간을 계산하고, 정오를 표시하는 지역 관습에 맞게 조정하고, 사람들이 직장에서 돌아온 후 충분한 일광이 남도록 잠재적으로 조정합니다. 기타 정치적 고려 사항.
벅찬 맞죠? 실제로 이것은 일반적인 문제이지만 완전한 대답은 위치에 따라 다릅니다.
$zone = new \DateTimeZone('America/New_York'); // Or your own definition of “here”
$todayStart = new \DateTime('today midnight', $zone);
$timestamp = $todayStart->getTimestamp();
“여기”에 대한 잠재적 정의는 https://secure.php.net/manual/en/timezones.php에 나열되어 있습니다.
strtotime('America/New_York today midnight');
? - 3v4l.org/I85qD
$today_at_midnight = strtotime(date("Ymd"));
당신이 원하는 것을 줄 것입니다.
설명
내가 한 일은 PHP의 날짜 함수를 사용하여 시간에 대한 참조없이 오늘 날짜를 가져온 다음 날짜와 시간을 epoch 타임 스탬프로 변환하는 'string to time'함수에 전달했습니다. 시간이 없으면 그날의 1 초를 가정합니다.
참조 : 날짜 기능 : http://php.net/manual/en/function.date.php
시간에 대한 문자열 : http://us2.php.net/manual/en/function.strtotime.php
strtotime()
마음은 날짜 기능에 너무 집중했습니다. 사과.
더 많은 객체 방식으로 :
$today = new \DateTimeImmutable('today');
예:
echo (new \DateTimeImmutable('today'))->format('Y-m-d H:i:s');
// will output: 2019-05-16 00:00:00
과:
echo (new \DateTimeImmutable())->format('Y-m-d H:i:s');
echo (new \DateTimeImmutable('now'))->format('Y-m-d H:i:s');
// will output: 2019-05-16 14:00:35
function getTodaysTimeStamp() {
const currentTimeStamp = Math.round(Date.now() / 1000);
const startOfDay = currentTimeStamp - (currentTimeStamp % 86400);
return { startOfDay, endOfDay: startOfDay + 86400 - 1 };
}
// starts from sunday
function getThisWeeksTimeStamp() {
const currentTimeStamp = Math.round(Date.now() / 1000);
const currentDay = new Date(currentTimeStamp * 1000);
const startOfWeek = currentTimeStamp - (currentDay.getDay() * 86400) - (currentTimeStamp % 86400);
return { startOfWeek, endOfWeek: startOfWeek + 7 * 86400 - 1 };
}
function getThisMonthsTimeStamp() {
const currentTimeStamp = Math.round(Date.now() / 1000);
const currentDay = new Date(currentTimeStamp * 1000);
const startOfMonth = currentTimeStamp - ((currentDay.getDate() - 1) * 86400) - (currentTimeStamp % 86400);
const currentMonth = currentDay.getMonth() + 1;
let daysInMonth = 0;
if (currentMonth === 2) daysInMonth = 28;
else if ([1, 3, 5, 7, 8, 10, 12].includes(currentMonth)) daysInMonth = 31;
else daysInMonth = 30;
return { startOfMonth, endOfMonth: startOfMonth + daysInMonth * 86400 - 1 };
}
console.log(getTodaysTimeStamp());
console.log(getThisWeeksTimeStamp());
console.log(getThisMonthsTimeStamp());