【问题标题】:Convert WebApi's Returned DateTime into Javascript's Date将 Web Api 返回日期时间转换为 Javascript 日期
【发布时间】:2016-10-22 10:12:02
【问题描述】:

我有一个用 WebApi 编写的后端服务和一个使用 AngularJS 的前端。我从后端返回了 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"
}

我的问题是,如何在 Angular 控制器中接收有效的日期?

【问题讨论】:

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


    【解决方案1】:

    您应该从您的 Web api 以 ISO8601 格式的字符串形式返回日期。要将字符串转换为日期,您需要在日期上调用parse 方法。

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

    【讨论】:

    • 对不起,这不起作用。它说$scope.minSelectedScheduleDateNaN
    • @EmdadulSawon - 你的awaiting 是你GetDateTime 行动中的所有任务吗?你能分享service.getDateTime的角度服务代码吗?
    【解决方案2】:

    我认为您以字符串的对象格式获取日期作为响应,所以试试这个

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 2016-12-17
          • 2023-03-26
          • 2012-05-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-01
          相关资源
          最近更新 更多