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


Convert JavaScript new Date() to php 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äische Sommerzeit("转换为DateTime,以便将其保存到postgresql?

您可以从Date对象获取unix时间戳,如下所示(请参阅Date.protype.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时间戳,您可以使用format方法以所需的格式打印它。记住提前设置时区

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

因为javascript不能很好地与时区配合使用,所以我建议您尽可能使用unix时间戳。这样你就可以减少时区的问题。

您可以使用此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']));

您可以执行类似的操作

$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;

试试这个

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