Convierta la fecha de JavaScript en .NET DateTime

Obtengo un valor de fecha de JavaScript a un controlador en MVC y me gustaría analizarlo en formato .NET DateTime pero me da un error como:

La cadena no se reconoció como una fecha y hora válida.

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 funciona:

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

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

preguntado el 22 de mayo de 12 a las 11:05

4 Respuestas

Lo siguiente se analiza bien con el modelo predeterminado DateTime en un controlador .NET MVC:

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

contestado el 12 de mayo de 15 a las 08:05

¡Solución perfecta! - user2145393

En lugar de analizar una representación textual, sería más sólido construir una DateTime de una marca de tiempo en su lugar. Para obtener una marca de tiempo de un JS Date:

var msec = date.getTime();

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

contestado el 22 de mayo de 12 a las 11:05

Desde el uso de .NET 4.6 DateTimeOffset.FromUnixTimeMilliseconds(msec).DateTime - Andriy Tolstoi

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

Fecha JS var d = new Date()

devoluciones: jue 19 de noviembre 08:30:18 PST 2015

A C# no le gusta este formato, así que conviértalo a UTC:

var dc = d.toUTCString()

Devoluciones: jue, 19 de noviembre de 2015 16:30:18 UTC

UTC: el horario estándar mundial no es una zona horaria, por lo que debe cambiarlo a una zona horaria

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

ahora esta listo para

Jue, 19 nov 2015 16:30:18 GMT

En una línea

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

Jue, 19 nov 2015 16:30:18 GMT

para C #

DateTime DateCreated= DateTime.Parse(ol);

respondido 19 nov., 15:17

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

Usar Moment.js

1) .NET DateTime -> Fecha de JavaScript

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

2) Fecha de JavaScript -> Fecha y hora de .NET

var dotNetDateTime = jsDate;

respondido 03 mar '16, 14:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.