将JavaScript new Date()转换为php DateTime()

时间:2015-07-03 16:13:46

标签: javascript php date datetime

我在HTML中有两个字段:

<input id="datum" type="date">
<input id="uhrzeit" type="time">

JavaScript:

var datumUhrzeit = new Date($("#datum").val()+","+$("#uhrzeit").val());
console.log(datumuhrzeit);

 "Tue Aug 18 2015 16:45:00 GMT+0200 (Mitteleuropäische Sommerzeit)"

如何将PHP中的“Tue Aug 18 2015 16:45:00 GMT + 0200(MitteleuropäischeSommerzeit)”转换为DateTime,以便将其保存到postgresql?

4 个答案:

答案 0 :(得分:3)

您可以从Date对象获取unix时间戳,如下所示(see Date.prototype.getTime

var timestamp = '@' + Math.round(datumUhrzeit.getTime()/1000);

然后在服务器上发送时只需创建新的日期时间对象

$datumUhrzeit = new DateTime($timestamp);

如果您无法使用javascript创建时间戳,并且您可以直接从表单获取数据,则可以执行以下操作:请记住设置时区:

$datum = $_GET['datum'];
$uhrzeit = $_GET['uhrzeit'];
$datumUhrzeit = DateTime::createFromFormat('Y-m-d H:i:s', $datum . ' ' . $uhrzeit, new DateTimeZone('Europe/Berlin'));

现在,您已将日期保存到数据库并检索它,您可以将其发回

print $datumUhrzeit->format('U'); // This will print the time as unix timestamp

之后,您将使用时间戳

创建javascript日期对象
var datumUhrzeit = new Date(timestamp * 1000); // timestamp from above

如果由于某种原因不想使用unix时间戳,可以使用格式化方法以所需格式打印。请记住事先设置时区

$datumUhrzeit->setTimezone(new DateTimeZone('Europe/Berlin'));
print $datumUhrzeit->format('Y-m-d H:i:s');

因为javascript对时区不起作用,所以我建议你尽可能使用unix时间戳。通过这种方式,您可以减少时区问题。

答案 1 :(得分:0)

您可以执行类似

的操作
$datumUhrzeit = 'Tue Aug 18 2015 16:45:00 GMT+0200 (Mitteleuropäische Sommerzeit)';
$datumUhrzeit = substr($datumUhrzeit, 0, strpos($datumUhrzeit, '('));
$resultDate = date('Y-m-d h:i:s', strtotime($datumUhrzeit));
echo $resultDate;

答案 2 :(得分:0)

您可以使用此javascript函数将dateObjectdate string转换为所需格式:

/**
 * Formats a dateObject or date string to Y-m-d date
 * Example: Converts  dateObject or date string  Sat Aug 19 2017 00:00:00 GMT+0530 (India Standard Time)   TO  2017-08-19   
 */
function format_date( date )
{
    if (typeof date == "string")
    {
        date = new Date(date);
    }

    var year = date.getFullYear();
    var month = (1 + date.getMonth()).toString();
    month = month.length > 1 ? month : '0' + month;

    var day = date.getDate().toString();
    day = day.length > 1 ? day : '0' + day;

    return year+'-'+month+'-'+day;
}

var dateString = 'Tue Aug 18 2015 16:45:00 GMT+0200 (Mitteleuropäische Sommerzeit)';

var formattedDate = format_date(dateString);//returned formatted date is 2015-08-18

然后,您可以将此格式化日期传递给PHP代码,您可以使用函数strtotime将此日期转换为所需格式。例如:

$myFormattedDate = date('d-m-Y', strtotime($_REQUEST['formattedDate']));

答案 3 :(得分:-1)

尝试这个

 function myFunction() {
      var content =  document.getElementById("datum").value+","+document.getElementById("uhrzeit").value;
  console.log(content);

  }