2017-07-24 48 views
0

嗨,我使用js datetime,并将此变量发送给php。现在我想将这个js日期转换为php日期时间,但它不工作。这是我想要的。将js日期转换为php时间戳

输入:

星期一2017年7月31日06:00:00 GMT + 0500(巴基斯坦标准时间)

Outut:

2017年7月31日06: 00:00

这是我的代码:

$dispatchDate = "Mon Jul 31 2017 06:00:00 GMT+0500 (Pakistan Standard Time)"; 
$dispatchDate = substr($dispatchDate, 0, strpos($dispatchDate, '(')); 
echo date('Y-m-d h:i:s', strtotime($dispatchDate)); 

但它不工作。

+0

这看起来像php代码不是JavaScript,但您的标签指的是javascript @ – marzelin

+0

@marzelin,js变量通过ajax调用传递给php。现在我想将这个字符串转换为一个php格式。现在明白了吗? –

+0

但你想在服务器上使用php做到这一点,对吧? – marzelin

回答

0

工作解决方案,我认为最简单:将您的javascript日期时间转换为int(timestamp)将时间戳发送到您的PHP并将您的时间戳转换回PHP日期时间。

date('Y-m-d H:i:s', your timestamp) 
0

你得到时间GMT转换时间在PST

<?php 
    $dispatchDate = "Mon Jul 31 2017 06:00:00 GMT+0500 (Pakistan Standard Time)"; 
    $dispatchDate = substr($dispatchDate, 0, strpos($dispatchDate, '(')); 
    echo date('Y-m-d h:i:s', strtotime($dispatchDate." +5 hours"));  
    ?> 

现场演示:https://eval.in/836779

0
  1. 获取实际的时间戳(即,自Unix纪元毫秒)在JS。这是最容易使用的ISO 8601格式的字符串,这个

    let dispatchDate = new Date('2017-07-31T06:00:00+05:00') 
    let ts = dispatchDate.getTime()/1000 // JS timestamps are in ms, PHP in seconds 
        // -> 1501462800 
    
  2. 该值发送给PHP

  3. 解析时间戳到PHP DateTime对象

    $tz = new DateTimeZone('+0500'); 
    $timestampFromJs = $_POST['dispatchDate']; // or however you send it 
    $dispatchDate = new DateTime('@' . $timestampFromJs, $tz); 
    
  4. 使用DateTime#format显示日期字符串

    echo $dispatchDate->format('Y-m-d h:i:s');