今日の午前0時にphpでタイムスタンプを取得するにはどうすればよいですか。月曜日の午後5時で、月曜日(今日)の真夜中(午前12時)のタイムスタンプが必要だとします。
ありがとうございました
今日の午前0時に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')
、それからのようなすべてのCarbonを使用できます->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の日付関数を使用して、時間への参照なしで今日の日付を取得し、それを '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());