2012-05-22 26 views
7

que conseguir un valor Date de JavaScript para un controlador de MVC y me gustaría analizar a formato .NET DateTime pero su me da un error como:Convertir JavaScript Fecha de .NET DateTime

El cadena no se reconoció como un DateTime válido.

el formato de la fecha de JavaScript es:

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

He intentado esto pero no su trabajo:

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

alguien me puede dar un código de ejemplo por favor? ¡Gracias!

Respuesta

6

En lugar de analizar una representación textual, sería más robusto construir un DateTime a partir de una marca de tiempo. Para conseguir una marca de tiempo de un JS Date:

var msec = date.getTime(); 

Y para convertir msec (lo que representa una cantidad de milisegundos) en 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

Desde .NET 4.6 '' 'DateTimeOffset.FromUnixTimeMilliseconds (ms) .DateTime''' –

5

A continuación se realiza un análisis sintáctico bien con el DateTime modelbinder por defecto en una Controlador .NET MVC:

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

esto funciona perfectamente y es más conciso – WraithNath

1

Esto es lo que hice y por qué. Espero que esto ayude.

JS Fecha var d = new Date()

devuelve: Jue Nov 19 08:30:18 PST 2015

C# no le gusta este formato para convertirlo a UTC:

var dc = d.toUTCString() 

rendimientos: Jue, 19 de noviembre de 2015 16:30:18 UTC

UTC - El Worlds Time Standard no es un huso horario, por lo que debe cambiarlo por un huso horario

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

ahora está listo para

Jue 19 Nov el año 2015 16:30:18 GMT

En una línea

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

Jue 19 Nov el año 2015 16:30:18 GMT

para C#

DateTime DateCreated= DateTime.Parse(ol); 
1

No necesita ninguna conversión: el databinder predeterminado de DateTime en un controlador .NET MVC funciona bien con un objeto JavaScript Date.

Uso de Moment.js

1) .DateTime NET -> JavaScript Fecha

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

2) JavaScript Fecha -> .NET DateTime

var dotNetDateTime = jsDate; 
Cuestiones relacionadas