在php中将日和年转换为日月和年格式

发布于 2025-01-03 14:20:02 字数 137 浏览 1 评论 0原文

所以我有以下格式的天数和年份:

322 days
2009 year

我需要将其转换为 2009-11-18

php 中有一个函数可以实现此目的吗?

So I have the number of days and the year in the following format:

322 days
2009 year

I need to convert this to 2009-11-18

Is there a function in php to achieve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

°如果伤别离去 2025-01-10 14:20:02

当然,使用 mktimedate

$days = 322;
$year = 2009;
echo date('Y-m-d', mktime( 0, 0, 0, 1, $days, $year));

输出:2009-11-18

Sure, use mktime and date:

$days = 322;
$year = 2009;
echo date('Y-m-d', mktime( 0, 0, 0, 1, $days, $year));

Output: 2009-11-18

や三分注定 2025-01-10 14:20:02
$newformat = new DateTime::createFromFormat('Y z', "2009 322")->format('Y-M-d');

相关文档在这里: http://php.net/manual/en/datetime.createfromformat.php

$newformat = new DateTime::createFromFormat('Y z', "2009 322")->format('Y-M-d');

Relevant docs here: http://php.net/manual/en/datetime.createfromformat.php

也只是曾经 2025-01-10 14:20:02

我们在 php 中确实有 strtotime() ,它可以轻松地从年份中提取时间戳:

echo $time = strtotime( '1.1.2009');
// 1230764400

并通过添加天数来链接它:

echo $newTime = strtotime( '+322 days', $time);
// 1258585200
echo date( 'r', $newTime);
// Thu, 19 Nov 2009 00:00:00 +0100
echo date( 'Y-m-d', $newTime);
// 2009-11-19
// output will be 19 instead of 18 (due to how strtotime handles + days), you
// should use +321 days instead than

btw:我更喜欢 Marc B 的答案。)

We do have strtotime() in php, which can easily pull timestamp from year:

echo $time = strtotime( '1.1.2009');
// 1230764400

And chain it with adding days:

echo $newTime = strtotime( '+322 days', $time);
// 1258585200
echo date( 'r', $newTime);
// Thu, 19 Nov 2009 00:00:00 +0100
echo date( 'Y-m-d', $newTime);
// 2009-11-19
// output will be 19 instead of 18 (due to how strtotime handles + days), you
// should use +321 days instead than

btw: I like Marc B's answer better .)

中性美 2025-01-10 14:20:02

困难的方法(作为奖励,我解析了您给出的输入示例:p):

list($day, $foo, $year, $bar) = sscanf("322 days 2009 year", "%d %s %d %s");
$timestamp = mktime (0,0,0, 1, $day, $year);
echo date('Y-m-d', $timestamp);

The hard way ( and as a bonus, I parse the input example you gave :p ):

list($day, $foo, $year, $bar) = sscanf("322 days 2009 year", "%d %s %d %s");
$timestamp = mktime (0,0,0, 1, $day, $year);
echo date('Y-m-d', $timestamp);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文