PHP 从 43556 等值中获取月份和年份
PHP get month and year from a value such as 43556
我在数据库中有一个名为 "GROWTH_SALES_MONTHSTART" 的字段,其值为 43556。在 PHP 中从中获取月份和年份的正确方法是什么?
strtotime( "43556")
给出 bool(false)
.
编辑:
我尝试了以下方法,但日期显示不正确。
$tt = date( 'M-y', 43556 ) ;
var_dump( $tt );
我应该收到的实际日期是 4 月 19 日,而我收到的是 1 月 70 日。我错过了什么吗?
我正在从 CSV 中提取值 (43556)。
PHP 的内置 strtotime(...)
方法需要有效的时间格式并将您的输入视为 秒 ,以及您尝试转换的值我们可以这样说:
- 您的
43556 seconds
等于 725.9
小时(除以 60
)
725.9
小时等于 30.2
天。
30
天只有一个月。
- 一年的第一个月是
January
。
- PHP时钟的第一年是
1970
。
这就是为什么您坚持使用 Jan-70
的原因。
无论如何,如果你的时间是基于Excel
,你可以使用下面的公式将Excel日期更改为Unix日期,那么你可以使用“gmdate(...)
”来获取真实日期(如another answer):
$EXCEL_DATE = 43556; // Your CSV value goes here
$UNIX_DATE = ($EXCEL_DATE - 25569) * 86400;
echo gmdate("d-M-Y H:i:s", $UNIX_DATE);
输出:
01-Apr-2019 00:00:00
但是,如果您的时间不是 Excel
,您应该:
- 找出您的 CSV 时间所基于的年份和日期。
- 将其转换为秒(其中
1970
应为零),以获得 $baseTime
.
- 最后,只需将
$baseTime
添加到您的 CSV 时间值。
例如:
$baseTime = strtotime( 'Tue Dec 15 2009' );
$tt = date( "d-m-Y H:i:s", strtotime( $baseTime + 43556 ) );
var_dump( $tt );
我在数据库中有一个名为 "GROWTH_SALES_MONTHSTART" 的字段,其值为 43556。在 PHP 中从中获取月份和年份的正确方法是什么?
strtotime( "43556")
给出 bool(false)
.
编辑: 我尝试了以下方法,但日期显示不正确。
$tt = date( 'M-y', 43556 ) ;
var_dump( $tt );
我应该收到的实际日期是 4 月 19 日,而我收到的是 1 月 70 日。我错过了什么吗?
我正在从 CSV 中提取值 (43556)。
PHP 的内置 strtotime(...)
方法需要有效的时间格式并将您的输入视为 秒 ,以及您尝试转换的值我们可以这样说:
- 您的
43556 seconds
等于725.9
小时(除以60
) 725.9
小时等于30.2
天。30
天只有一个月。- 一年的第一个月是
January
。 - PHP时钟的第一年是
1970
。
这就是为什么您坚持使用 Jan-70
的原因。
无论如何,如果你的时间是基于Excel
,你可以使用下面的公式将Excel日期更改为Unix日期,那么你可以使用“gmdate(...)
”来获取真实日期(如another answer):
$EXCEL_DATE = 43556; // Your CSV value goes here
$UNIX_DATE = ($EXCEL_DATE - 25569) * 86400;
echo gmdate("d-M-Y H:i:s", $UNIX_DATE);
输出:
01-Apr-2019 00:00:00
但是,如果您的时间不是 Excel
,您应该:
- 找出您的 CSV 时间所基于的年份和日期。
- 将其转换为秒(其中
1970
应为零),以获得$baseTime
. - 最后,只需将
$baseTime
添加到您的 CSV 时间值。
例如:
$baseTime = strtotime( 'Tue Dec 15 2009' );
$tt = date( "d-m-Y H:i:s", strtotime( $baseTime + 43556 ) );
var_dump( $tt );