【发布时间】:2015-02-02 15:47:26
【问题描述】:
在查看了 cmets 之后,我决定澄清我的问题,以便更清楚地了解问题到底是什么以及我正在尝试做什么。
我正在尝试采用 Angular Bootstrap 表单,该表单是绑定到范围内 Orders 模型的数据,并希望将此对象转换为 x-www-urlencoded 格式,例如OrderRef=101121&OrderDate=2015-02-02T17:40:00.111Z&Address=140%20Acacia%20Street 以便我可以将 $http.post(..) 方法传递给它。
我在 Internet 上找到了一个示例,可以将我的 Order 对象转换为 x-www-urlencoded 形式。这几乎可以工作,但对象中的日期属性没有被格式化为 UTC。
我有一个 RESTful API,它希望所有日期都以 UTC 格式的日期传递,POST 失败并出现错误。
当我使用以下代码转换对象时:
var order = {
OrderRef: '101121',
OrderDate: new Date('02/02/2015'),
Address: '140 Acacia Street'
}
var data = jQuery.param(order);
我收到了 Mon+Mar+02+2015+00%3A00%3A00+GMT%2B0000+(GMT+Standard+Time) 的 OrderDate 属性,这不是我想要的。
如果我将此转换后的对象发送到我的 RESTful API,它会出错,因为它不理解特定的日期格式。
是否有内置的 JavaScript 函数可以将具有Date 属性的对象正确转换为 UTC 格式?
这是我尝试绑定到 OrderDate 属性的 Bootstrap UI <input> 元素。
只有在属性上使用new Date('02/02/2015') 时才能正确显示日期。如果我这样做 `OrderDate: '02/02/2015' 将不起作用,因为输入元素根本不会显示日期。
<div class="form-group">
<label for="inputOrderRef3" class="col-sm-2 control-label">Order Ref</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="inputOrderRef3" placeholder="Order Ref" ng-model="order.OrderRef" maxlength="6" required>
</div>
</div>
我将 Twitter Bootstrap v3.3.2 与 AngularJS v1.3.9 和 jQuery 2.1.3 一起使用。
【问题讨论】:
-
我在这里没有看到任何 JSON,也不知道您所说的“JSON 日期”是什么意思。如果要控制日期的输出格式,请使用 Date 对象可用的各种方法。您的示例似乎也很简单,因为如果您知道日期(在本例中为
02/02/2015),为什么不直接以您想要的格式将其写入OrderDate? -
json 没有日期。 json 只是 javascript 数据结构的文本编码。如果你想在你的 json 中使用 UTC 日期,那么你必须确保你编码的任何数据结构都有一个 UTC 格式的字符串开头。
-
你的问题措辞有误,但如果我理解你想要做什么,你正在寻找类似
date.toUTCString()reference here -
@HowardRenollet:我已经尝试过了,但由于我使用的是 Bootstrap UI,因此输入字段不会接受任何日期,除非日期是使用 Date(...) 对象创建的。
标签: jquery json angularjs twitter-bootstrap-3