从字符串中获取时间戳
getting only time timestamp from string
假设我有一个时间字符串“9:30”,我想将其转换为时间戳。
我现在做的是提取它并手动计算时间戳。
list($hour, $minute) = explode(':', '9:30');
$timestamp = $hour * 3600 + $minute * 60;
我想知道是否有使用 Carbon 或 DateTime 对象的聪明方法。
使用strtotime()
manual
$time = '9:30';
$timestamp = strtotime($time);
echo date('H:i',$timestamp);
我认为您无法仅从小时或分钟获得时间戳,因为时间戳是从 00:00:00 1970 年 1 月 1 日星期四开始的秒数(查看 wikipedia link 了解更多信息细节)。所以没有日期部分你就没有时间戳。您能否解释一下您打算如何使用它?
如果您打算根据给定的日期时间计算不同的时间戳,那么您可以采用不同的方法。假设您计划在给定时间后的 1 天或 24 小时内获取时间戳,那么您可以这样做(非面向对象的方式):
$givenTimestamp = strtotime('17-06-2018 09:30:00');
$dayInSeconds = 24*60*60;
$calculatedTimeStamp = $givenTimestamp + $dayInSeconds;
如果您只是想获取时间戳的时间部分已经过去了多少秒(例如给定日期的示例中的 9:30),那么您可以这样做:
list($hour, $minute) = explode(':', date ('H:i', strtotime('2018-06-16 09:30:00')));
$secondsSinceStartOfDay = intval($hour)*60*60 + intval($minute) * 60;
不对 $hour 和 $minute 使用 intval 可能会得到相同的结果,但最好对它们使用 intval 以避免在某些情况下可能出现的问题。
使用 Carbon 更新
从 Carbon 文档来看,您似乎仍然需要日期部分来生成时间戳。因此,如果您的 $date 像这样的“2018-06-16”和 $time 像这样的“09:30”,那么您可以像这样重新创建日期时间:
$dateTimeString = $date .' '. $time .':00';
$carbonDateTime = Carbon::parse($dateTimeString);
// $carbonDateTime will now have your date time reference
// you can now get the timestamp like this
echo $carbonDateTime->timestamp;
假设我有一个时间字符串“9:30”,我想将其转换为时间戳。 我现在做的是提取它并手动计算时间戳。
list($hour, $minute) = explode(':', '9:30');
$timestamp = $hour * 3600 + $minute * 60;
我想知道是否有使用 Carbon 或 DateTime 对象的聪明方法。
使用strtotime()
manual
$time = '9:30';
$timestamp = strtotime($time);
echo date('H:i',$timestamp);
我认为您无法仅从小时或分钟获得时间戳,因为时间戳是从 00:00:00 1970 年 1 月 1 日星期四开始的秒数(查看 wikipedia link 了解更多信息细节)。所以没有日期部分你就没有时间戳。您能否解释一下您打算如何使用它?
如果您打算根据给定的日期时间计算不同的时间戳,那么您可以采用不同的方法。假设您计划在给定时间后的 1 天或 24 小时内获取时间戳,那么您可以这样做(非面向对象的方式):
$givenTimestamp = strtotime('17-06-2018 09:30:00');
$dayInSeconds = 24*60*60;
$calculatedTimeStamp = $givenTimestamp + $dayInSeconds;
如果您只是想获取时间戳的时间部分已经过去了多少秒(例如给定日期的示例中的 9:30),那么您可以这样做:
list($hour, $minute) = explode(':', date ('H:i', strtotime('2018-06-16 09:30:00')));
$secondsSinceStartOfDay = intval($hour)*60*60 + intval($minute) * 60;
不对 $hour 和 $minute 使用 intval 可能会得到相同的结果,但最好对它们使用 intval 以避免在某些情况下可能出现的问题。
使用 Carbon 更新
从 Carbon 文档来看,您似乎仍然需要日期部分来生成时间戳。因此,如果您的 $date 像这样的“2018-06-16”和 $time 像这样的“09:30”,那么您可以像这样重新创建日期时间:
$dateTimeString = $date .' '. $time .':00';
$carbonDateTime = Carbon::parse($dateTimeString);
// $carbonDateTime will now have your date time reference
// you can now get the timestamp like this
echo $carbonDateTime->timestamp;