php - 如何将日期固定为类似的格式?
问题描述
我收到 2 种日期格式:
1/22/2020
1/22/20
我需要转换1/22/2020
为1/22/20
我目前使用以下内容,但我不确定如何进行检查并在添加日期之前进行转换
foreach($header as $field){
if (preg_match("/([1-9]|1[0-2])\/([1-9]|[1-2][0-9]|3[0-1])\/[0-9]{2}$/",$field)) {
if($insert){
$days[] = ["date" => $field, $type => $value[$field]];
}
else{
$date_index = array_search($field, array_column($globalData[$index]['data'], 'date'));
$globalData[$index]['data'][$date_index][$type] = $value[$field];
}
}
}
解决方案
您可以使用 php DateTime::createFromFormat函数以更强大的方式转换日期。
// filter only 4 digit year using regex
if (preg_match('/^\d{1,2}\/\d{1,2}\/\d{4}$/', $date)) {
$dateObj = DateTime::createFromFormat('n/d/Y', $date);
if ($dateObj === false) {
throw new Exception("Not a valid date");
}
// convert it to 2 digit year
echo $dateObj->format('n/j/y');
}
以下是它如何适用于您的问题
<?php
foreach($header as $field){
if (preg_match('/^\d{1,2}\/\d{1,2}\/\d{4}$/', $field)) {
$dateObj = DateTime::createFromFormat('n/d/Y', $field);
if ($dateObj === false) {
throw new Exception("Not a valid date");
}
// convert it to 2 digit year
$field = $dateObj->format('n/j/y');
if($insert){
$days[] = ["date" => $field, $type => $value[$field]];
}
else{
$date_index = array_search($field, array_column($globalData[$index]['data'], 'date'));
$globalData[$index]['data'][$date_index][$type] = $value[$field];
}
}
}
推荐阅读
- visual-studio - IIS Express 告诉我一个端口正在使用中,但 netstat 另有说明
- wordpress - 类别的自定义 WooCommerce 订购
- java - Java中的包相对标识符路径
- php - 使用 PHP cURL 从另一个页面显示 div
- math - 用两点画线并将其放置在几何图形上
- sql-server - 具有列 idEntity 的表查询失败
- c++ - 使用 Q_PROPERTY 通过 QWebChanel 传递自定义对象
- selenium - 如何进行注册表单验证?
- android - 了解在 Android 文档中添加的 API 级别
- django - 当我签出 Git 分支时,Django 如何继续使用正确的文件?