ฉันจะไปเกี่ยวกับการประทับเวลาใน php สำหรับวันนี้ตอนเที่ยงคืนได้อย่างไร สมมติว่าเป็นวันจันทร์ 17.00 น. และฉันต้องการให้ประทับเวลาของวันจันทร์ (วันนี้) ตอนเที่ยงคืน (00.00 น.) ซึ่งเกิดขึ้นแล้ว
ขอบคุณ
ฉันจะไปเกี่ยวกับการประทับเวลาใน php สำหรับวันนี้ตอนเที่ยงคืนได้อย่างไร สมมติว่าเป็นวันจันทร์ 17.00 น. และฉันต้องการให้ประทับเวลาของวันจันทร์ (วันนี้) ตอนเที่ยงคืน (00.00 น.) ซึ่งเกิดขึ้นแล้ว
ขอบคุณ
คำตอบ:
$timestamp = strtotime('today midnight');
คุณอาจต้องการดูว่า PHP มีอะไรให้บ้าง: http://php.net/datetime
$timestamp = strtotime('today');
คือเที่ยงคืน แต่pssstข้างบนดูเท่กว่าเป็นคำตอบสำหรับคำถาม;)
strtotime('today+00:00')
คุณสามารถใช้
ฉันคิดว่าคุณควรใช้วัตถุ PHP DateTime ใหม่เนื่องจากไม่มีปัญหาในการทำวันที่เกินข้อ จำกัด 32 บิตที่ strtotime () มี นี่คือตัวอย่างของวิธีที่คุณจะได้รับวันที่ของวันนี้ตอนเที่ยงคืน
$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
วันนี้ตอนเที่ยงคืน. ง่าย.
$stamp = mktime(0, 0, 0);
คุณกำลังต้องการคำนวณเวลาของเหตุการณ์ท้องฟ้าล่าสุดที่ดวงอาทิตย์ผ่านตรงใต้เท้าของคุณปรับให้เหมาะกับการจัดทำเครื่องหมายเวลาเที่ยงวันในท้องถิ่นและอาจปรับเปลี่ยนเพื่อให้ผู้คนมีเวลากลางวันเพียงพอหลังจากกลับบ้านจากที่ทำงานและสำหรับ การพิจารณาทางการเมืองอื่น ๆ
น่ากลัวใช่มั้ย? อันที่จริงปัญหานี้เป็นปัญหาทั่วไป แต่คำตอบที่สมบูรณ์ขึ้นอยู่กับตำแหน่ง:
$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 เพื่อรับวันที่ของวันนี้โดยไม่ต้องอ้างอิงเวลาใด ๆ จากนั้นส่งต่อไปยังฟังก์ชัน 'string to time' ซึ่งจะแปลงวันที่และเวลาเป็นการประทับเวลายุค หากไม่ได้เวลาก็ถือว่าเป็นวินาทีแรกของวันนั้น
ข้อมูลอ้างอิง: ฟังก์ชันวันที่: http://php.net/manual/en/function.date.php
String To Time: 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
$timestamp = strtotime('today midnight');
เหมือนกับ
$timestamp = strtotime('today');
และเซิร์ฟเวอร์ของคุณทำงานน้อยลงเล็กน้อย
$midnight = strtotime('midnight');
เป็นที่ถูกต้อง
นอกจากนี้คุณยังสามารถลอง
หรือstrtotime('12am')
strtotime('[input any time you wish to here. e.g noon, 6pm, 3pm, 8pm, etc]')
ฉันข้ามการเพิ่มวันนี้ก่อนเที่ยงคืนเพราะค่าเริ่มต้นคือวันนี้
หากคุณใช้ Carbon คุณสามารถทำสิ่งต่อไปนี้ได้ คุณสามารถจัดรูปแบบวันที่นี้เพื่อตั้งค่าExpire
ส่วนหัว HTTP
Carbon::parse('tomorrow midnight')->format(Carbon::RFC7231_FORMAT)
อัปเดตคำตอบในวันที่ 19 เมษายน 2020
เพียงแค่เราสามารถทำได้:
$today = date('Y-m-d 00:00:00');
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());