如何将JSON日期转换为UTC格式

时间:2015-02-02 15:47:26

标签: jquery json angularjs twitter-bootstrap-3

在审核了评论之后,我决定澄清我的问题,以便更清楚地了解问题究竟是什么以及我想要做什么。

我正在尝试使用Angular Bootstrap表单,该表单是绑定到作用域上Orders模型的数据,并希望将此对象转换为x-www-urlencoded格式,例如OrderRef=101121&OrderDate=2015-02-02T17:40:00.111Z&Address=140%20Acacia%20Street以便我可以通过$http.post(..)方法传递它。

我在互联网上找到了一个示例,我可以将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);

我为OrderDate属性获取Mon+Mar+02+2015+00%3A00%3A00+GMT%2B0000+(GMT+Standard+Time),这不是我想要的。

如果我将此转换后的对象发送到我的RESTful API,则会出错,因为它不了解特定的日期格式。

是否有内置的JavaScript函数可以将具有Date属性的对象正确转换为UTC格式?

这是我尝试绑定到<input>属性的Bootstrap UI OrderDate元素。

仅在属性上使用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。

3 个答案:

答案 0 :(得分:0)

我曾经尝试过一段时间也遇到了同样的问题。

试试这个http://momentjs.com/docs/

答案 1 :(得分:0)

通过艰难的方式解决我自己的问题并创建一个encode函数,它将手动生成url编码的字符串。

var order = {
    OrderRef: '100101',
    OrderDate: new Date('02/02/2015'),
    CustomerName: 'ACME Installations Ltd',
    Value: 525.00,
    encode: function () {
        return "OrderRef=" + encodeURIComponent(this.OrderRef) + "&OrderDate=" + encodeURIComponent(this.OrderDate.toUTCString()) +
            "&CustomerName=" + encodeURIComponent(this.CustomerName) +  "&Value=" + encodeURIComponent(this.Value) +
            "&Invoice=0";
    }
}

答案 2 :(得分:0)

创建一个新类

 public class UTCDateTimeConverter : IsoDateTimeConverter
{
    public UTCDateTimeConverter()
    {
        base.DateTimeFormat = "yyyy-MM-dd";
    }
}

现在转换如下

    [JsonProperty("label")]
    [JsonConverter(typeof(UTCDateTimeConverter))]
    public DateTime label { get; set; }