Làm thế nào tôi sẽ nhận được một dấu thời gian trong php cho ngày hôm nay vào lúc nửa đêm. Giả sử hôm nay là 5 giờ chiều thứ hai và tôi muốn Dấu thời gian cho Thứ Hai (hôm nay) lúc nửa đêm (12 giờ sáng) đã xảy ra.
Cảm ơn bạn
Làm thế nào tôi sẽ nhận được một dấu thời gian trong php cho ngày hôm nay vào lúc nửa đêm. Giả sử hôm nay là 5 giờ chiều thứ hai và tôi muốn Dấu thời gian cho Thứ Hai (hôm nay) lúc nửa đêm (12 giờ sáng) đã xảy ra.
Cảm ơn bạn
Câu trả lời:
$timestamp = strtotime('today midnight');
Bạn có thể muốn xem những gì PHP cung cấp: http://php.net/datetime
$timestamp = strtotime('today');
là nửa đêm. Nhưng Pssst một ở trên vẻ bề ngoài lạnh như một câu trả lời cho câu hỏi;)
strtotime('today+00:00')
.
Tôi nghĩ rằng bạn nên sử dụng đối tượng DateTime PHP mới vì nó không có vấn đề gì khi thực hiện các ngày vượt quá giới hạn 32 bit mà strtotime () có. Đây là một ví dụ về cách bạn nhận được ngày hôm nay vào lúc nửa đêm.
$today = new DateTime();
$today->setTime(0,0);
Hoặc nếu bạn đang sử dụng PHP 5.4 trở lên, bạn có thể thực hiện theo cách này:
$today = (new DateTime())->setTime(0,0);
Sau đó, bạn có thể sử dụng echo $today->format('Y-m-d');
để lấy định dạng mà bạn muốn đối tượng của mình xuất ra.
new DateTime('today midnight')
điều này làm cho ý định rõ ràng hơn (nhưng đây tất nhiên là vấn đề về sở thích).
$today = new DateTime('today')
new Carbon('today midnight')
và sau đó bạn có thể sử dụng tất cả các công cụ Carbon như thế nào ->subDays(6)
. Xem carbon.nesbot.com
Bạn đang tìm cách tính thời gian của sự kiện thiên thể gần đây nhất mà mặt trời đi qua ngay dưới chân bạn, điều chỉnh cho các quy ước địa phương về đánh dấu buổi trưa cao và cũng có khả năng điều chỉnh để mọi người có đủ ánh sáng ban ngày sau khi đi làm về và các cân nhắc chính trị khác.
Đùa giỡn phải không? Thực ra đây là một vấn đề phổ biến nhưng câu trả lời đầy đủ là phụ thuộc vào vị trí:
$zone = new \DateTimeZone('America/New_York'); // Or your own definition of “here”
$todayStart = new \DateTime('today midnight', $zone);
$timestamp = $todayStart->getTimestamp();
Định nghĩa tiềm năng của “tại đây” được liệt kê tại https://secure.php.net/manual/en/timezones.php
strtotime('America/New_York today midnight');
thế nào? - 3v4l.org/I85qD
$today_at_midnight = strtotime(date("Ymd"));
sẽ cung cấp cho bạn những gì bạn đang theo đuổi.
giải trình
Những gì tôi đã làm là sử dụng hàm date của PHP để lấy ngày hôm nay mà không có bất kỳ tham chiếu nào về thời gian, sau đó chuyển nó vào hàm 'string to time' để chuyển đổi ngày và giờ thành dấu thời gian của kỷ nguyên. Nếu nó không có thời gian, nó giả định là giây đầu tiên của ngày đó.
Tài liệu tham khảo: Ngày Chức năng: http://php.net/manual/en/ Chức năng.date.php
Chuỗi theo thời gian: http://us2.php.net/manual/en/ Chức năng.strtotime.php
strtotime()
, tâm trí tập trung vào chức năng ngày. Xin lỗi.
Theo cách đối tượng khác:
$today = new \DateTimeImmutable('today');
thí dụ:
echo (new \DateTimeImmutable('today'))->format('Y-m-d H:i:s');
// will output: 2019-05-16 00:00:00
và:
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');
giống như
$timestamp = strtotime('today');
và nó sẽ ít hoạt động hơn trên máy chủ của bạn.
$midnight = strtotime('midnight');
là hợp lệ
Bạn cũng có thể thử
strtotime('12am')
hoặc strtotime('[input any time you wish to here. e.g noon, 6pm, 3pm, 8pm, etc]')
. Tôi đã bỏ qua việc thêm ngày hôm nay trước nửa đêm vì mặc định là hôm nay.
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());