#javascript #angularjs #datetime #asp.net-web-api2
#javascript #angularjs #дата-время #asp.net-web-api2
Вопрос:
У меня есть внутренний сервис, написанный на WebAPI, и интерфейс с AngularJS.Из серверной части я вернул дату — время, как показано ниже
public async Task<DateTime> GetDateTime(Guid id)
{
DateTime dateTime = GetDateTime();
return dateTime;
}
Внутри контроллера angular я получил ответ, подобный этому
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 Controller?
Ответ №1:
Вы должны возвращать дату в виде строки в формате ISO8601 из вашего веб-api. Чтобы преобразовать строку в дату, вам нужно вызвать метод parse для даты.
$scope.minSelectedScheduleDate = Date.parse(data);
Комментарии:
1. Извините, это не работает. В нем говорится
$scope.minSelectedScheduleDate
, чтоNaN
2. @EmdadulSawon —
awaiting
все задачи находятся внутри вашегоGetDateTime
действия? Можете ли вы поделиться кодом службы angular для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, которое возвращает свойство revisionDate: Date из службы WebAPI. Первое, что мы делаем с ним после загрузки, чтобы преобразовать его в дату javascript, вот так:
// convert WebApi date format to javascript format
myJsonObject.revisionDate = new Date(myJsonObject.revisionDate.toString());