2012-05-22 2 views
7

Я получаю значение Date из JavaScript в контроллер в MVC, и я хотел бы разобрать его в формат .NET DateTime, но его дает мне ошибку, такие как:Преобразование JavaScript Дата для .NET DateTime

В строка не была признана действительной DateTime.

Формат даты JavaScript является:

"Wed May 23 2012 01:40:00 GMT+0200 (W. Europe Daylight Time)" 

Я попытался это, но он не работает:

DateTime.ParseExact(begin.Substring(1, 24), "ddd MMM d yyyy HH:mm:ss", CultureInfo.InvariantCulture); 

кто может дать мне пример кода, пожалуйста? благодаря!

ответ

6

Вместо синтаксического анализа текстового представления было бы более надежным создание DateTime из временной метки. Для того, чтобы получить временную метку из JS Date:

var msec = date.getTime(); 

И конвертировать msec (который представляет собой количество миллисекунд) в DateTime:

var date = new DateTime(1970, 1, 1, 0, 0, 0, 0); // epoch start 
date = date.AddMilliseconds(msec); // you have to get this from JS of course 
+0

С .NET 4.6 использование '' 'DateTimeOffset.FromUnixTimeMilliseconds (мс) .DateTime''' –

5

Следующая разбирает хорошо по умолчанию DateTime ModelBinder в в .NET MVC-контроллер:

var myJsDate = new Date(); 
var myDotNetDate = myJsDate.toISOString(); 
+0

это прекрасно работает и более кратким – WraithNath

1

Вот что я сделал и почему. Надеюсь, это поможет.

JS Дата var d = new Date()

возвращается: Чт Ноя 19 8:30:18 PST 2015

C# не нравится этот формат так преобразовать его в UTC:

var dc = d.toUTCString() 

возвращается: Thu, 19 ноября 2015 года 16:30:18 UTC

UTC - The Worlds Time Standard не является часовым поясом, поэтому вам необходимо изменить его на часовой пояс

var cr = dc.replace("UTC","GMT") 

теперь готов

Thu, 19 Nov 2015 16:30:18 GMT

В одной строке

var ol = d.toUTCString().replace("UTC","GMT")` 

чт, 19 ноября 2015 16:30:18 GMT

для C#

DateTime DateCreated= DateTime.Parse(ol); 
1

Вам не нужно преобразовывать: по умолчанию DateTime modelbinder в .NET MVC Controller отлично работает с объектом JavaScript Date.

Использование Moment.js

1) .NET DateTime -> JavaScript Дата

var jsDate = moment(dotNetDateTime).toDate(); 

2) JavaScript Date -> .NET DateTime

var dotNetDateTime = jsDate; 
Смежные вопросы