php - 是否有可能在不循环的情况下获得一系列时间戳?
问题描述
我有一组时间戳,我想从中提取年份。我知道如何通过循环数组来做到这一点,但我想知道是否有一个函数可以返回一个带有年份的数组。我的数组示例
$dates = ['1498780800000', '1530316800000', '1561852800000', '1593475200000'];
预期产出
magic_function($dates); // ['2017', '2018', '2019', '2020'];
解决方案
您的时间戳是从 Javascript 生成的毫秒时间戳。为了在 PHP 中使用,这些必须转换为秒,然后才能使用 date 函数确定年份。要创建没有 foreach 循环的年份数组,可以使用 array_map。
function getYearsFromMsTimestamps(array $msTimestamps){
return array_map(function($val){return date('Y',$val/1000);},$msTimestamps);
}
$dates = ['1498780800000', '1530316800000', '1561852800000', '1593475200000'];
$arrYears = getYearsFromMsTimestamps($dates);
$expected = ['2017', '2018', '2019', '2020'];
var_dump($arrYears === $expected); //bool(true)
更灵活的方法是使用格式作为函数的第二个可选参数。
function getYearsFromMsTimestamps(array $msTimestamps, $format = 'Y'){
return array_map(
function($val) use($format){
return date($format,$val/1000);
},
$msTimestamps
);
}
如果没有第二个参数,你会得到类似上面的结果。以 'Ymd' 作为第二个参数
$arrYears = getYearsFromMsTimestamps($dates,'Y-m-d');
然后是一个数组
array(4) {
[0]=> string(10) "2017-06-30"
[1]=> string(10) "2018-06-30"
[2]=> string(10) "2019-06-30"
[3]=> string(10) "2020-06-30"
}
推荐阅读
- apache - Trying to force https via htaccess but strange behavior is happening. It removes a forward slash
- tensorflow - Is there a worked example for neural network pruning for the Faster-RCNN architecture from TensorFlow's object detection api?
- excel - 如何动态引用任何给定表格中的最后一个单元格?
- node.js - 与 Redis 客户端一起使用的相同 Redis 密码因 Node.JS createClient() 方法而失败?
- automated-tests - 如何在 OpenTest 框架中导入外部 Java 库?
- wso2 - WSO2 ESB (4.9.0) / MB (3.1.0) - 无法连接到代理(连接被拒绝)
- elixir - 向对象添加虚拟字段
- c# - ASP.NET MVC C# DataTypeAttribute 参数
- css - Magento 2 - 未在开发模式下创建的符号链接
- kubernetes - 默认情况下,节点到 Pod 的通信在 GCP 上不起作用