日期时间不会自动从json-date解析为js date对象

时间:2015-09-03 22:58:41

标签: c# json angularjs datetime

我发送了几个属性作为json,datetime属性转移了某种破坏,其他所有都没问题。

我如何在javascript中收到datetim属性:

已创建:" /日期(1441198490467 + 0200)/"

这将是理想的日期: 02.09.2015 14:54:50

enter image description here

我该如何解决这个问题?

C#:

web服务:

    [System.ServiceModel.OperationContract]
    [System.ServiceModel.Web.WebGet(UriTemplate = "PeekCustomer", ResponseFormat = WebMessageFormat.Json)]
    System.Collections.Generic.List<BusinessObjects.Customer> PeekCustomers();

日期属性:

    public DateTime Created {
        get;
        set;
    }

访问数据:

while (reader.Read()) {
      result.Add(new BusinessObjects.Customer {
          ID = reader.GetGuid(0),
          Name = reader.GetString(1),
          Created = reader.GetDateTime(2)
      });
}

的Javascript(角):

app.config(function(RestangularProvider){
   RestangularProvider.setBaseUrl('http://localhost:31896/BusinessService.svc/');
   RestangularProvider.setDefaultRequestParams('jsonp', { callback:    'JSON_CALLBACK' });
   RestangularProvider.setFullResponse(true);
});

服务:

    Restangular.all('').customGET('PeekCustomer').then(function (result){
        data.customers = result;
    })

2 个答案:

答案 0 :(得分:1)

好吧,您的约会日期将以JSON格式转移。您可以在客户端上将其转换回所需的格式(例如,甚至可以更正用户所在的时区)。看来你的客户并没有将日期格式评估回脚本(并且没有提供data.customers只做猜测的事情。

作为一种变通方法,您可以将Created属性的数据类型更改为字符串,并使用正确的格式字符串对其进行格式化。但一般来说,首先检查您的客户端脚本。

答案 1 :(得分:0)

经过几个小时的搜索后,我发现遇到了同样问题的人:

How do I format a Microsoft JSON date?

以下是代码:

//service:
Restangular.all('').customGET('PeekCustomer').then(function (result){
    data.customers = angular.copy(result);
    data.customers = data.customers.data;

    for(var i = 0; i <= data.customers.length - 1; i++) {
        data.customers[i].Created = new Date(parseInt(data.customers[i].Created.substr(6)));
    }
})

//markup:
{{customer.Created | date:"yyyy-MM-dd HH:mm"}}

JSON日期是关键字。