2012-05-22 12 views
7

ho ottenere un valore Date da JavaScript a un controller in MVC e vorrei analizzare in formato .NET DateTime ma la sua dandomi un errore come:Convertire JavaScript Data di .NET DateTime

Il la stringa non è stata riconosciuta come un DateTime valido.

Il formato della data di JavaScript è:

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

Ho provato questo, ma la sua non funziona:

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

qualcuno può darmi un codice di esempio per favore? Grazie!

risposta

6

Invece di analizzare una rappresentazione testuale, sarebbe più robusto costruire un DateTime da un timestamp. Per ottenere un timestamp da un JS Date:

var msec = date.getTime(); 

E convertire msec (che rappresenta la quantità di millisecondi) in un 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

Da .NET 4.6 uso '' 'DateTimeOffset.FromUnixTimeMilliseconds (msec) .DateTime''' –

5

il seguente analizza bene con il modelbinder DateTime predefinito in un .NET MVC Controller:

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

funziona perfettamente ed è più conciso – WraithNath

1

Ecco cosa ho fatto e perché. Spero che aiuti.

JS Data var d = new Date()

rendimenti: Gio 19 Nov 08:30:18 CET 2015

C# non piace questo formato in modo da convertirlo in UTC:

var dc = d.toUTCString() 

rendimenti: Thu, 19 Nov 2015 16:30:18 UTC

UTC - Il fuso orario del mondo non è un fuso orario, quindi è necessario modificarlo in un fuso orario

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

ora è pronto per

Gio 19 Nov 2015 16:30:18 GMT

In una riga

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

Gio 19 Nov 2015 16:30:18 GMT

per C#

DateTime DateCreated= DateTime.Parse(ol); 
1

Non è necessaria alcuna conversione: il modello predefinito DateTime in un controller MVC .NET funziona correttamente con un oggetto Date JavaScript.

Utilizzando Moment.js

1) .NET DateTime -> Data JavaScript

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

2) JavaScript Data -> .NET DateTime

var dotNetDateTime = jsDate; 
Problemi correlati