【问题标题】:Sending JS date object to PHP将 JS 日期对象发送到 PHP
【发布时间】:2014-12-15 19:22:05
【问题描述】:

我正在用 ajax 向 PHP 发送 JS 日期对象。然后我将它写入mySql。 我应该在发送之前将日期对象转换为 javascript 中的字符串吗?或者我可以用 PHP 转换它 - 我更喜欢这个解决方案。 哪种方式是正确的?

PS。我正在使用 PDO 将其写入 DB。

【问题讨论】:

  • 您不能通过 ajax 发送“代码”对象。一种或另一种方式,您将 JS 日期对象序列化为字符串,因此不妨将其序列化为易于解析的内容,例如一个 unix 时间戳(在 JS 中以毫秒为单位)。
  • 你不能发送对象,所以无论哪种方式,当它到达服务器时都会是一个字符串。
  • 自 unix 时代起将它们作为 some unit 的整数
  • 发送时间戳...如Date.now()(new Date()).getTime()
  • 无论您以何种方式发送日期,它都将是一个字符串。您可以以任何格式执行此操作,只要您知道如何解析回您选择的数据库引擎可以解析的日期。

标签: javascript php mysql date


【解决方案1】:

在大多数情况下您必须将您的 JS 日期转换为字符串。 好的方法是:

var d = new date();
var iso_date_string = d.toISOString(); 
// produces "2014-12-15T19:42:27.100Z"
var locale_date_string = d.toLocaleDateString();
// produces "12/15/2014"

toLocaleDateString() 有很多本地化选项。

您可以通过

将任何有效的日期字符串转换为 PHP 中的日期
$date = date( "Y-m-d H:i:s", strtotime("2014-12-15T19:42:27.100Z") );
// produces "2014-12-15 20:42:27"
$date = date( "Y-m-d", strtotime("12/15/2014") );
// 2014-12-15

"Y-m-d H:i:s"Y-m-d 可以是any supported date and/or time format

【讨论】:

    【解决方案2】:

    POST 和 GET 都向服务器提交字符串,请在此处阅读答案:What are the data type limitations of the POST and GET HTML Form Methods?

    但实际上是否必须手动转换取决于您的框架,例如 jQuery will convert objects to strings for you 在发送到服务器之前(听起来像您想要的那样)。

    还有其他端到端框架可能以您无需在浏览器或服务器上手动转换的方式处理数据绑定。

    【讨论】:

      猜你喜欢
      • 2012-04-03
      • 2023-03-26
      • 1970-01-01
      • 2021-07-07
      • 2011-03-21
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 2015-07-07
      相关资源
      最近更新 更多