php - PHP 从 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(...)
方法需要有效的时间格式并将您的输入视为seconds,关于您尝试转换为 time 的值,我们可以这样说:
- 您的数字
43556 seconds
等于725.9
小时(除以60
) 725.9
小时等于天30.2
。- 天
30
等于一,也只有一个月。 - 一年的第一个月是
January
。 - PHP 时钟的第一年是
1970
.
这就是为什么您坚持使用Jan-70
.
无论如何,如果您的时间是Excel
基于的,您可以使用下面的公式从Excel 日期更改为Unix 日期,然后您可以使用 " gmdate(...)
" 获取真实日期(如另一个答案):
$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 );
推荐阅读
- php - 在 WooCommerce 中根据用户类型启用不同的产品变体价格
- spring - 用于在 Linux 上运行 postgres docker 映像失败的 Bash 脚本
- sed - 使用带减号的 sed
- javascript - 检测浏览器、选项卡以及所有打开的选项卡中的哪个选项卡是否已关闭
- php - 在 MacOS Catalina 上使用 MAMP 在 codeigniter 4 中看不到我的控制器
- ios - UICollectionView:如何使用新的 iOS 13 API UICollectionViewDiffableDataSource & NSDiffableDataSourceSnapshot 进行分页集合?
- node.js - 如何在 node.js 中上传图像文件?
- sum - 如何计算当月的金额总和,包括 Power Bi 中前几个月的金额?
- clojure - 消除clojure中的依赖关系
- node.js - 如何避免在量角器中悬停?