【问题标题】:Converting date to timestamp based on timezone根据时区将日期转换为时间戳
【发布时间】:2017-08-20 02:47:35
【问题描述】:

我正在使用 PHP Imap 获取电子邮件,这是一个对象示例:

Array
(
    [0] => stdClass Object
        (
            [subject] => Email Subject
            [from] => Sender <sender@domain.com>
            [to] => me@domain.com
            [date] => Sat, 19 Aug 2017 20:09:33 +1000
            [message_id] => <80d657c74967c8dc56138ca9552f0a2e@anyweb.apca.local>
            [size] => 1881518
            [uid] => 703
            [msgno] => 527
            [recent] => 0
            [flagged] => 0
            [answered] => 0
            [deleted] => 0
            [seen] => 0
            [draft] => 0
            [udate] => 1503137430
        )

)

虽然我确实有 udate,但我想仔细检查是否与我的时区匹配,所以我做了:

date_default_timezone_set('Australia/Melbourne');
$str = 'Sat, 19 Aug 2017 20:09:33 +1000';
echo strtotime($str); // 1503137373 ??

甚至尝试过:

$date = new DateTime($str, new DateTimeZone('Australia/Melbourne'));
$timestamp = $date->format('U');
echo $timestamp; // 1503137373 ?? 

所以在这两种情况下,我得到的时间戳都与从邮件服务器获取的时间戳不匹配,我在这里缺少什么?

【问题讨论】:

  • timestamp 是一种将时间跟踪为运行总秒数的方法。所以你的数据库邮件发送时间和当前时间永远不会相同
  • 如果您可以从数据库中获取时区,那么您的问题就解决了
  • 所以他们大约休息一分钟? ...430 和 ....373。那不是时区。是否可以发送时间和接收时间?

标签: php date timezone imap


【解决方案1】:
  • udate - 由邮件服务器标记

  • 日期,日期 - 由客户标记

“日期”和“日期”之间的区别似乎不仅仅是 只是它们的格式。

'date' 是发件人在标题中写入的日期 邮件客户端,可能与现实关系不大。它是 取决于您的发件人是否知道正确的时间;它可能是 几分钟、几天、几个月甚至几年。

'udate' 是电子邮件到达您的 IMAP 服务器的真实日期。

如果您想做一些简洁的事情,例如计算电子邮件数量,请使用“udate” 您每天都会收到 - 或者像我一样收到多少垃圾邮件。

http://titanic.fauser.edu/php/function.imap-headerinfo.php.htm


来自here

date - 在其标题中找到的消息日期

日期 - 与日期相同

udate - Unix 时间的邮件消息日期

【讨论】:

    【解决方案2】:

    你可以这样做

    date_default_timezone_set('Australia/Melbourne');
    
    $script_tz = date_default_timezone_get();
    
    if (strcmp($script_tz, ini_get('date.timezone'))){
       echo 'Script timezone differs from ini-set timezone.';
    } else {
       echo 'Script timezone and ini-set timezone match.';
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-26
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      • 2017-04-25
      • 2022-01-08
      相关资源
      最近更新 更多