228 votes

Conversion des millisecondes en date (jQuery/JavaScript)

Je divague un peu, mais je vais essayer de rester clair

Je m'ennuie, alors je travaille sur un "shoutbox" et je suis un peu perdu sur un point. Je veux obtenir l'heure à laquelle un message est entré, et je veux m'assurer que j'obtiens l'heure du serveur, ou au moins m'assurer que je n'obtiens pas l'heure locale de l'utilisateur. Je sais que cela n'a pas d'importance, puisque cette chose ne sera utilisée par personne d'autre que moi, mais je veux être minutieux. J'ai cherché et testé plusieurs choses, et je pense que la seule façon de le faire est de récupérer les millisecondes depuis 1er janvier 1970 00:00:00 UTC puisque ce serait la même chose pour tout le monde.

Je fais ça comme ça :

var time = new Date();
var time = time.getTime();

Cela renvoie un nombre comme 1294862756114 .

Existe-t-il un moyen de convertir 1294862756114 en une date plus lisible, comme DD/MM/YYYY HH:MM:SS ?

Donc, en gros, je cherche l'équivalent en JavaScript de l'équivalent en PHP. date(); fonction.

5 votes

Si vous ne voulez pas avoir l'heure locale, alors pourquoi utiliser le javascript pour cela ? ne devriez-vous pas le faire au niveau du serveur ?

1 votes

Vérifiez cette bibliothèque -> datejs.com (Vérifiez toString())

0 votes

@fazo - C'était plus ou moins un projet destiné à m'aider à m'améliorer avec JS, donc j'essaie d'utiliser PHP aussi peu que possible (si possible seulement pour lire/écrire des données dans un fichier).

349voto

Brian Donovan Points 3649
var time = new Date().getTime(); // get your number
var date = new Date(time); // create Date object

console.log(date.toString()); // result: Wed Jan 12 2011 12:42:46 GMT-0800 (PST)

1 votes

Y a-t-il un avantage à le faire en deux étapes ? (Calculer d'abord le temps, puis l'utiliser comme argument pour la date). N'obtenez-vous pas exactement le même résultat en faisant simplement var date = new Date() ; ?

13 votes

L'OP concernait la conversion d'un nombre de millisecondes en un nombre d'euros. Date c'est ce que fait la deuxième ligne. La première ligne est juste un moyen d'obtenir un nombre raisonnable de millisecondes. Vous pourriez aussi simplement faire var date = new Date(0); .

2 votes

L'heure doit être un nombre, pas une chaîne.

160voto

Phrogz Points 112337

Si vous souhaitez un formatage personnalisé de votre date, je vous propose les services suivants une fonction simple pour cela :

var now = new Date;
console.log( now.customFormat( "#DD#/#MM#/#YYYY# #hh#:#mm#:#ss#" ) );

Voici les jetons pris en charge :

token:     description:             example:
#YYYY#     4-digit year             1999
#YY#       2-digit year             99
#MMMM#     full month name          February
#MMM#      3-letter month name      Feb
#MM#       2-digit month number     02
#M#        month number             2
#DDDD#     full weekday name        Wednesday
#DDD#      3-letter weekday name    Wed
#DD#       2-digit day number       09
#D#        day number               9
#th#       day ordinal suffix       nd
#hhhh#     2-digit 24-based hour    17
#hhh#      military/24-based hour   17
#hh#       2-digit hour             05
#h#        hour                     5
#mm#       2-digit minute           07
#m#        minute                   7
#ss#       2-digit second           09
#s#        second                   9
#ampm#     "am" or "pm"             pm
#AMPM#     "AM" or "PM"             PM

Et voici le code :

//*** This code is copyright 2002-2016 by Gavin Kistner, !@phrogz.net
//*** It is covered under the license viewable at http://phrogz.net/JS/_ReuseLicense.txt
Date.prototype.customFormat = function(formatString){
  var YYYY,YY,MMMM,MMM,MM,M,DDDD,DDD,DD,D,hhhh,hhh,hh,h,mm,m,ss,s,ampm,AMPM,dMod,th;
  YY = ((YYYY=this.getFullYear())+"").slice(-2);
  MM = (M=this.getMonth()+1)<10?('0'+M):M;
  MMM = (MMMM=["January","February","March","April","May","June","July","August","September","October","November","December"][M-1]).substring(0,3);
  DD = (D=this.getDate())<10?('0'+D):D;
  DDD = (DDDD=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][this.getDay()]).substring(0,3);
  th=(D>=10&&D<=20)?'th':((dMod=D%10)==1)?'st':(dMod==2)?'nd':(dMod==3)?'rd':'th';
  formatString = formatString.replace("#YYYY#",YYYY).replace("#YY#",YY).replace("#MMMM#",MMMM).replace("#MMM#",MMM).replace("#MM#",MM).replace("#M#",M).replace("#DDDD#",DDDD).replace("#DDD#",DDD).replace("#DD#",DD).replace("#D#",D).replace("#th#",th);
  h=(hhh=this.getHours());
  if (h==0) h=24;
  if (h>12) h-=12;
  hh = h<10?('0'+h):h;
  hhhh = hhh<10?('0'+hhh):hhh;
  AMPM=(ampm=hhh<12?'am':'pm').toUpperCase();
  mm=(m=this.getMinutes())<10?('0'+m):m;
  ss=(s=this.getSeconds())<10?('0'+s):s;
  return formatString.replace("#hhhh#",hhhh).replace("#hhh#",hhh).replace("#hh#",hh).replace("#h#",h).replace("#mm#",mm).replace("#m#",m).replace("#ss#",ss).replace("#s#",s).replace("#ampm#",ampm).replace("#AMPM#",AMPM);
};

22voto

John K. Points 2747

Vous trouverez ci-dessous un extrait qui vous permettra de formater la date en fonction de la sortie souhaitée :

var time = new Date();
var time = time.getTime();

var theyear = time.getFullYear();
var themonth = time.getMonth() + 1;
var thetoday = time.getDate();

document.write("The date is: ");
document.write(theyear + "/" + themonth + "/" + thetoday);

4 votes

Vous n'avez pas besoin de points-virgules en JavaScript. Cependant, il est préférable de les utiliser. Parfois, sans eux, le sens d'une déclaration peut changer (pas dans ce cas cependant). Certains réviseurs de code les adorent et se battent pour leur présence. Pour garder les choses simples, il est préférable de toujours les utiliser.

2voto

abhi Points 79

Essayez celui-là :

var time = new Date().toJSON();

-1voto

Brian Flanagan Points 2955

À moins que vous n'ayez absolument besoin d'utiliser getTime(), je vous suggère d'utiliser l'une des autres méthodes JavaScript Date.

var myTime = new Date();
alert(myTime);

Ceci devrait produire un horodatage formaté.

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