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

0

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

2005-05-23 16: 06: 00.000

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

/Дата (1255470180000)/

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

Теги:
linq
datetime
asp.net-mvc

3 ответа

1
Лучший ответ

Я закончил форматирование кода в действии контроллера.

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

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

2

Дата, когда вы возвращаетесь, сериализуется маркером и несколькими миллисекундами с полуночи 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 5th edition, вы можете предоставить замену, отформатировав дату на строковой серверной стороне и обработать ее там, поскольку вы сказали, что не хотите анализировать дату на стороне клиента (хотя тег jQuery предложил мне, может быть, и так).

  • 0
    Я считаю, что это число миллисекунд с 1 января 1970 года - эпохи.
  • 0
    @ Тарски: Спасибо, я уточнил. (В JavaScript «тик» иногда является синонимом «миллисекунды», хотя, конечно, это не так, как, скажем, в C.)
Показать ещё 2 комментария
0

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

var listFromDb = ...
return new Json(listFromDb.Select(itemFromDb => new List { new 
     { Date = itemFromDb.Date, FormattedDate = FormatDate(itemFromDb.Date), ...}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню