113 votes

DateTime en date javascript

D'après une autre réponse sur Stackoverflow, il s'agit d'une conversion de la date Javascript en DateTime .net :

long msSinceEpoch = 1260402952906; // Value from Date.getTime() in JavaScript
return new DateTime(1970, 1, 1) + new TimeSpan(msSinceEpoch * 10000);

Mais comment faire l'inverse ? DateTime vers Date Javascript ?

0 votes

Dans les questions de ce type qui sont manifestement liées à ajax, vous devez préciser où vous effectuez la conversion, et compte tenu du fait qu'il n'existe pas de norme pour la sérialisation de la date dans JSON et qu'il est possible que vous ayez affaire à MS Date munging, par exemple /Date(02020202)/, assurez-vous de le préciser également. Bonne chance.

2 votes

Vous devriez mettre en lien la réponse à laquelle vous faites référence.

133voto

AxelEckenberger Points 9546

Essayez :

return DateTime.Now.Subtract(new DateTime(1970, 1,1)).TotalMilliseconds

Edit : vrai UTC est mieux, mais alors nous devons être cohérents

return DateTime.UtcNow
               .Subtract(new DateTime(1970,1,1,0,0,0,DateTimeKind.Utc))
               .TotalMilliseconds;

À bien y réfléchir, cela n'a pas d'importance, tant que les deux dates se situent dans le même fuseau horaire.

6 votes

Vous pouvez utiliser DateTime.UtcNow au lieu de DateTime.Now.

2 votes

Pour ce qui est de votre deuxième point de vue, le passage à l'heure d'été ou à l'heure d'hiver est important (je dois toujours réfléchir très fort pour me rappeler lequel des deux :). Pendant la transition, l'heure de 2:00 à 3:00 est répétée deux fois. Cela signifie que pendant une heure, la date en javascript sera décalée d'une heure. UTC n'a pas de DLS et n'a donc pas ce problème.

0 votes

J'ai le même code ici mais il y a une différence de 5:30 dans la date javascript alors que la date C# fonctionne bien.

50voto

Yair Nevet Points 5497

Le constructeur JavaScript Date accepte le nombre de millisecondes depuis l'époque Unix (1 janvier 1970 00:00:00 UTC). Voici une méthode d'extension C# qui convertit l'objet DateTime de .Net en date JavaScript :

public static class DateTimeJavaScript
{
   private static readonly long DatetimeMinTimeTicks =
      (new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).Ticks;

   public static long ToJavaScriptMilliseconds(this DateTime dt)
   {
      return (long)((dt.ToUniversalTime().Ticks - DatetimeMinTimeTicks) / 10000);
   }
}

Utilisation de JavaScript :

var dt = new Date(<%= DateTime.Today.ToJavaScriptMilliseconds() %>);
alert(dt);

0 votes

Utilisation en C# long date = DateTimeJavaScript.ToJavaScriptMilliseconds(DateTime) ; vérifier en javascript (Appuyez sur F12 dans Google Chrome et allez dans la console) var date = new Date(long) ; console.log(date.toString()) ;

39voto

Renan Cerqueira Points 430

Vous pouvez essayer cela dans votre action :

return DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss");

Et ceci dans votre succès Ajax :

success: function (resultDateString) {
    var date = new Date(resultDateString);
}

Ou ceci dans votre vue : (Javascript plus C#)

var date = new Date('@DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss")');

27voto

Krige Points 649

Avec Moment.js utilisez simplement :

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

netDateTime est votre variable DateTime sérialisée, quelque chose comme "/Date(1456956000000+0200)/" .

13voto

munissor Points 2559

Cela devrait faire l'affaire :

date.Subtract(new DateTime(1970, 1,1)).TotalMilliseconds

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X