【问题标题】:Splitting a timestamp into date and time and insert them into an associative array将时间戳拆分为日期和时间并将它们插入关联数组
【发布时间】:2016-04-19 15:21:50
【问题描述】:

我想从时间戳(毫秒)中获取时间和日期,并将它们插入到关联数组中。它看起来像这样:

$array = [ $date -> $time]

现在,我可以将日期和时间放入 2 个单独的数组中,但我想将它们放在一起,时间与相应的日期匹配。我应该获取每个时间戳,将其拆分并将其推入一个数组还是创建 2 个单独的数组然后将它们组合成一个更大的数组更好?关于我应该如何做到这一点的任何想法?

更多信息:我正在从 mysql 表中获取数据,并且我已经将时间戳转换为秒,因此我可以在 php.ini 中对其进行操作。我正在使用

获取日期和时间
 date('G:i', $timestamp)

 date('d-m-y', $timestamp)

【问题讨论】:

  • 使用array_combine 将两个数组组合成一个匹配您所需格式的数组。 php.net/array_combine
  • 数据库表中的列类型是什么?似乎您将其转换为秒只是为了将其转换回日期/时间。相当多余。
  • $array = array(date('d-m-y', $timestamp)=>date('G:i', $timestamp)) 喜欢这样吗?
  • @milankyada 是的,它会是这样的,但我的问题是如果我有多次约会。我希望新值被推送(一个键,多个值)而不是被覆盖。
  • @Marcus 我将日期保存为整数。我在 javascript 中获取毫秒数,然后将它们以秒数的形式推送到表格中。我这样做是因为我必须在 php 和 javascript 中操作日期

标签: php mysql arrays date


【解决方案1】:

为什么不将 DateTime 类添加到数组中

$d1=new DateTime("2012-07-08 11:14:15.638276");
print_r($d1);

可以输出格式:

echo $d1->format('Y-m-d\TH:i:s.u'); // 2011-01-01T15:03:01.012345

问候。

【讨论】:

  • 我想过这样做,但我需要在项目的另一部分返回每天的日期,所以要知道要返回哪些日期,我会遇到和我一样的问题现在,只是更进一步。
【解决方案2】:

假设时间戳符合你可以做的 unix 时间戳

$date = new DateTime();

$date->setTimestamp($timestamp);

$array = [
           'date' => $date->format('d-m-Y'),
           'time' => $date->format('G:i')
         ];

调整格式以满足您的需求

【讨论】:

    【解决方案3】:

    更多信息:我正在从 MySQL 表中获取数据,并且我已经将时间戳转换为秒数

    不要这样做不仅是一种不好的做法(闰秒),而且使用DateTime 会产生不必要的开销,您可以使用strtotime 理解的任何有效日期格式,或者使用createFromFormat 提供您自己的格式和值.

    一个简单的例子是:

    $dateTime = new Datetime($mysqlResult['date_field']);
    

    根据您的要求,您可以执行以下操作:

    $array = [ $dateTime->format('d-m-y') => $dateTime->format('G:i') ];
    

    我还建议使用 Carbon 之类的东西,它扩展了 PHP 的标准 DateTime 功能并进行了改进。

    【讨论】:

    • 我不喜欢这样保存日期,我的问题是我必须使用 ISO8601 格式的日期,这在 mySQL 中不起作用,所以我认为这将是最有效的方式去做。
    • 是的,它只是formatting 与您的 MySQL 和服务器时区设置相结合的问题。同样,以毫秒或秒为单位使用时间戳会违反闰秒,并会导致稍后的日期不匹配。
    • 我会在完成后尝试修复它。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2021-11-08
    • 2016-09-15
    • 2016-06-06
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    相关资源
    最近更新 更多