Во второй половине дня мы столкнулись с проблемой в преобразовании форматов даты MVC и EXTJ. Результатом сериализации объекта DateTime со стороны сервера .NET является формат строки, такой как «/дата» (1335258540000)/' .
Integer 1335258540000 на самом деле является миллисекундным интервалом в период с 1 января 1970 года и этим DateTime. Через JavaScript используйте функцию Eval, чтобы преобразовать эту строку даты в объект даты с часовым поясом, следующим образом
Используйте var date = eval ('new' + eval ('/date (1335258540000)/'). Source), чтобы получить объект JS
Проверьте это четко через предупреждение (дата).
Вторник 24 апреля 17:09:00 UTC+0800 2012
Выше приведено строка, автоматически полученная путем сериализации даты C# JSON. Вы также можете написать функцию, чтобы получить этот номер через C#, например,
public long millitimestamp (datetime thedate) {datetime d1 = new DateTime (1970, 1, 1); DateTime d2 = thedate.touniversaltime (); Timesspan TS = New TimesPan (D2.Ticks - D1.Ticks); вернуть (длинный) ts.totalmilliseconds; }Вышеуказанная функция такая же, как целое число в строке, полученное с использованием сериализации JSON.
Однако при возвращении на сторону сервера от клиента возникает проблема с датой. Как перенести объект Date of JavaScript обратно на сторону сервера?
Во -первых, получите это целое число через gettime () в дату JavaScript, а затем проанализируйте целое число на сервере и «построить» его в объект C# DateTime. Идея, вероятно, такая, но я столкнулся с некоторыми проблемами, когда вернулся в противоположном направлении.
public DateTime ConvertTime (Long Millhime) {Long TimeTricks = New DateTime (1970, 1, 1) .ticks + миллион времени * 10000; вернуть новое DateTime (TimeTricks); }Результаты, полученные через Converttime, обнаружили, что время было на 8 часов меньше, что было в часовом пояске сервера, временем восточной восьмой зоны, что означает, что 8 часов наносекунд должны быть добавлены, поскольку блок марки временной марки C# составляет один десять миллионов секунды, один час - 3600 секунд, то есть 8*3600*10000000000.
Таким образом, функция Converttime была изменена, правильная следующая:
public DateTime Converttime (Long Millhime) {long TimeTricks = new DateTime (1970, 1, 1) .Ticks + MillionTime * 10000 + Timezone.currentTimeZone.getUtcoffset (dateTime.now) .hours * 3600 * (long) 100000000; вернуть новое DateTime (TimeTricks); }Приведенный выше простой пример преобразования форматов времени и даты JS и C# - это весь контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.