将WebApi的返回日期时间转换为Javascript的日期

时间:2016-10-22 10:12:03

标签: javascript angularjs datetime asp.net-web-api2

我有一个使用 AngularJS在WebApi和前端编写的后端服务。从后端我已经返回DateTime,如下所示

public async Task<DateTime> GetDateTime(Guid id)
{
    DateTime dateTime = GetDateTime();
    return dateTime;
}

在角度控制器内部,我收到了这样的响应

service.getDateTime({
    id: $scope.id
},
function(data) {
    $scope.minSelectedScheduleDate = new Date(data);
    $scope.isBusy = false;
},
function(response) {
    $scope.isBusy = false;
});

minSelectedScheduleDate成为无效日期。

当我试图将数据看到控制台时,我看到了类似的内容:

Resource {
    0: "2",
    1: "0",
    2: "1",
    3: "6",
    4: "-",
    5: "1",
    6: "0",
    7: "-",
    8: "2",
    9: "8",
    10: "T",
    11: "1",
    12: "1",
    13: ":",
    14: "3",
    15: "0",
    16: ":",
    17: "0",
    18: "0"
}

我的问题是,如何在角度控制器中收到有效日期?

4 个答案:

答案 0 :(得分:1)

您应该从网络API中以ISO8601格式返回日期字符串。要将字符串转换为日期,您需要在日期调用parse方法。

$scope.minSelectedScheduleDate = Date.parse(data);

答案 1 :(得分:0)

我认为你以字符串的对象格式得到日期作为回应,所以试试这个

function(data) {
    var dateString="";
    for(var prop in data)
        dateString+=data[prop];
    $scope.minSelectedScheduleDate=new Date(dateString);
}

答案 2 :(得分:0)

问题是我直接返回DateTime对象。如果我从我的控制器返回一个匿名对象,那么Javascript反序列化一切正常。这是我现在的控制器:

public async Task<DateTime> GetDateTime(Guid id)
{
    DateTime dateTime = GetDateTime();
    return new
    { 
        ScheduleDate = dateTime
    };
}

答案 3 :(得分:0)

我们有一个Angular应用程序,该应用程序从WebApi服务返回RevificationDate:Date属性。加载后要做的第一件事是将其转换为javascript日期,如下所示:

// convert WebApi date format to javascript format
myJsonObject.revisionDate = new Date(myJsonObject.revisionDate.toString());