7

我有一个YDDD格式为 3212的日期
我想将此日期转换为默认日期字符串,即 PHP 中的 2013-08-01
因为第一个值Y是年份的唯一字符,所以我决定从当前年份,即 2013 年的 201
以下是我为年份编写的代码

<?php
$date = "3212"
$y = substr($date,0,1); // will take out 3 out of year 3212
$ddd = substr($date,1,3); // will take out 212 out of year 3212
$year = substr(date("Y"),0,3) . $y; //well create year "2013"
?>

现在我如何使用 PHP$year并将212其转换为2013-08-01

编辑
仅供参考:我的 PHP 版本是5.3.6

4

4 回答 4

13
$date = "3212";
echo DateTime::createFromFormat("Yz", "201$date")->format("Y-m-d");
// 2013-08-01
于 2013-08-01T07:04:18.183 回答
8
$yddd = 3212;
preg_match('/^(\d)(\d{3})$/', $yddd, $m);

echo date('Y-m-d', strtotime("201{$m[1]}-01-01 00:00:00 +{$m[2]} days"));
于 2013-08-01T06:55:53.867 回答
6

如果您在 PHP 5.3 或更高版本上运行代码,则可以使用 date_create_from_format 将 $year 和 $ddd 转换为可用日期。例如:

$date = date_create_from_format("Y-z", "$year-$ddd");
echo date_format($date, "Y-m-d");
于 2013-08-01T07:01:54.150 回答
2
// Formatted Date (YDDD)
$dateGiven = "3212";

// Generate the year based on the first digit
$year = substr(date("Y"),0,3).substr($dateGiven,0,1);

// Split out the day of the year
$dayOfTheYear = substr($dateGiven,1,3);

// Create a date object from the formatted date
$date = DateTime::createFromFormat('z Y',  "{$dayOfTheYear} {$year}");

// Output the date in the desired format
echo $date->format('Y-m-d');

在这里在线查看:https://eval.in/private/69daafa849ee36

于 2013-08-01T07:09:14.247 回答