【发布时间】: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。那不是时区。是否可以发送时间和接收时间?