Правильный способ форматирования даты из базы данных с использованием javascript / jquery - PullRequest
0 голосов
/ 16 апреля 2010

Я звоню в свою базу данных, которая содержит тип данных datetime. Дата выглядит так:

2005-05-23 16: 06: 00.000

Я хотел бы отобразить это в таблице, когда пользователь выбирает определенный элемент из списка. Я вызываю действия моего контроллера, возвращаю Джонсу все время и кладу их в таблицу. Проблема в том, что дата совершенно неверна. Что отображается так:

/ Дата (1255470180000) /

Возвращаемая дата даже не может быть проанализирована (что я не хочу делать в любом случае), поэтому я даже не могу получить данные, если захочу. Есть идеи?

Ответы [ 3 ]

2 голосов
/ 16 апреля 2010

Дата, которую вы получаете, сериализуется в маркер и количество миллисекунд с полуночи 1 января 1970 года (в UTC). Если вы изолируете числовую часть, преобразуете ее в число и вводите в конструктор Date, с которым вы получите фактическую дату для работы, которую затем можете форматировать по своему усмотрению.

var ticks, dt;

// Isolate the numeric portion of the value
ticks = /[0-9]+/.exec(json.dateValue)[0];

// Convert to a number
ticks = parseInt(ticks);

// Convert to a date
dt = new Date(ticks);

В качестве альтернативы, если сериализатор JSON на сервере поддерживает параметр «replacer», как это делают Crockford и ECMAScript 5-го издания, вы можете предоставить заменитель, который отформатировал дату в виде строки на стороне сервера, и обработать ее там, поскольку вы сказали, что не хочу анализировать дату на стороне клиента (хотя тег jQuery подсказал мне, может быть, вы сделали).

1 голос
/ 16 апреля 2010

Вместо этого я отформатировал код в действии контроллера.

Я просто преобразовал свойство datetime в строку с помощью .ToString () и получил желаемые результаты.

Спасибо за помощь, ребята.

0 голосов
/ 16 апреля 2010

Другой альтернативой является возврат отформатированной строки из действия контроллера. Вы даже можете оставить метку времени и вернуть второе поле как «Форматированная метка времени» или что-то подобное.

var listFromDb = ...
return new Json(listFromDb.Select(itemFromDb => new List { new 
     { Date = itemFromDb.Date, FormattedDate = FormatDate(itemFromDb.Date), ...}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...