【发布时间】:2013-12-27 02:25:51
【问题描述】:
我已经尝试解决这个问题好几天了,它已经到了让我头疼的地步。
我正在尝试创建一个函数,它将 ebay 时间(2013 年 12 月 27 日 05:26:29 PST)格式化为 Unix 时间戳,但不知何故,我的系统用一个非常错误的时区更改了时间戳。
这是从 ebay 获取日期的代码。
function getEndDate($itemno, $html)
{
global $settings;
$dom = new DOMDocument();
//<span class="vi-tm-left" id="vi-cdown_timeLeft">
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$elements = $xpath->query('//span[@class="vi-tm-left"]');
if (!is_null($elements)) {
foreach ($elements as $element) {
$enddate = strip_tags($element->nodeValue);
$enddate = str_replace("(","", $enddate);
$enddate = str_replace(")","", $enddate);
$enddate = convertEbayStamp($enddate);
return $enddate;
}
return false;
}
return false;
}
这是我将其转换为timestamp 函数的绝妙方法:
function convertEbayStamp($stamp) {
$months = array('Jan' => 1, 'Feb' => 2, 'Mar' => 3, 'Apr' => 4, 'May' => 5, 'Jun' => 6, 'Jul' => 7, 'Aug' => 8, 'Sep' => 9, 'Oct' => 10, 'Nov' => 11, 'Dec' => 12);
$arr = explode(" ",$stamp);
// arr[0] = Dec, arr[1] = 31, // arr[2] = 2013, // arr[3] = 21:15:01 // arr[4] = PST
$month = $months[$arr[0]];
$day = str_replace(",","",$arr[1]);
$timeelements = explode(":",$arr[3]);
return mktime($timeelements[0],$timeelements[1],$timeelements[2], $month, $day, $arr[2]);
}
遗憾的是,我所做的一切都没有,设置 date_timezone_set 对我有用,也没有使用 DateTime。
【问题讨论】:
-
mktime的最后一个参数是夏令时参数,默认为-1,可能会导致意外的结果。您是否尝试过明确设置?
-
您是否尝试过使用
strtotime或strptime函数? -
@Zarazthuztra - 我没有尝试设置它。但是当我需要 PST 而不是 UTC 时间时,我认为夏令时参数对我没有任何好处:)
-
@Orifjon 我已经尝试了许多不同的组合,但是它要么返回 0,要么只是将时间戳 -18988 年等及时返回。