如何在PHP中将/ Date(1490914800000 + 0100)/格式的日期转换为mysql datetime格式?

我试图通过提取数字部分来解决它,然后使用日期函数对其进行解析。 但它告诉我一些旧日期,我猜这是不正确的。</ p>

  $ datef =“1490914800000 + 0100”; 
$ adada = date('Ymd H:i: s',$ datef);
//给出日期1987-10-13 18:31:28这是一个古老的约会。 请建议。
</ code> </ pre>
</ div>

展开原文

原文

I have tried to solve it by extracting the numeric part and then parsed it using date function. But it shows me some old date which I guess is not correct.

$datef = "1490914800000+0100";
$adada = date('Y-m-d H:i:s', $datef);
// Gives date 1987-10-13 18:31:28 which is an old date. Please suggest.

duangang4940
duangang4940 您错误地使用了API。请参阅此处了解正确的方法。此外,您将处理时区转换。
3 年多之前 回复
drrhr20884
drrhr20884 我的问题与1987-10-1318:31:28没有插入数据库的日期无关。这个日期是通过API来的,它是优惠券或交易的到期日。日期不能太旧。它的格式不同于我所做的或我还没有做过的事情......如果你对/Date(...。)/有所了解请关注。
3 年多之前 回复
duandiaoqian5795
duandiaoqian5795 实际上1987-10-1318:31:28可以由MySQL处理。您打算如何将这些数据导入MySQL?
3 年多之前 回复

2个回答

One approach, well-covered by this SO question, is to use the DateTime() function to convert time in seconds since epoch to a date, and then display this date using format(). But there are two caveats with your data. First, you appear to have milliseconds since the epoch, which needs to be converted to seconds. Second, you also have a timezone shift, in hours, tagged to the end. I split your $datef string into two parts, epoch and timezone, then arrive at the number of seconds since epoch.

list($epoch, $timezone) = explode('+', $datef);

$epoch = ($epoch / 1000) + (substr($timezone, 0, 2)*60*60) +
         (substr($timezone, 2, 2)*60);
$dt = new DateTime("@$epoch");
echo $dt->format('Y-m-d H:i:s');

Output:

2017-03-31 00:00:00

Demo here:

PHP Sandbox

duanou3868
duanou3868 我现在明白了这一切。 感谢您投入这个问题的宝贵时间。
3 年多之前 回复
dongqiyang3711
dongqiyang3711 你不考虑时区。
3 年多之前 回复
dongmu3269
dongmu3269 非常感谢蒂姆先生。 但是我已经阅读了你建议的链接。 解决方案就像$ datef =“1490914800000 + 0100”; echo date(“Y-m-d H:i:s”,substr($ datef,0,10)); 结果略有不同。 它是什么?
3 年多之前 回复
drhs13583567608
drhs13583567608 印度以外的很多人实际上是timeanddate.com/time/time-zones-interesting.html
3 年多之前 回复
douxing2652
douxing2652 忘了印度,让我更新,谢谢
3 年多之前 回复
dttnb997315
dttnb997315 $ timezone / 100 < - 这个表达式意味着它在一小时内是100秒,这将为非零分钟时区返回错误的结果。
3 年多之前 回复



时间似乎以毫秒为单位。
您可以将时区移位添加到秒。 1小时= 3600秒。</ p>

  $ milliSeconds = intval(“1490914800000”); 
$ seconds = $ milliSeconds / 1000;
$ date = date(“Ymd H :i:s“,$ seconds);
</ code> </ pre>
</ div>

展开原文

原文

The time seems to be in milliseconds. You can add the timezone shift to the seconds. 1 hour = 3600 seconds.

$milliSeconds = intval("1490914800000");
$seconds = $milliSeconds/1000;
$date = date("Y-m-d H:i:s", $seconds);

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问