web-dev-qa-db-fra.com

Conversion de millisecondes en date (jQuery / JavaScript)

Je suis un peu un randonneur, mais je vais essayer de garder cela clair -

Je m'ennuie, alors je travaille sur un "shoutbox", et je suis un peu confus sur une chose. Je souhaite connaître l'heure à laquelle un message est entré et m'assurer que l'heure du serveur est correcte ou du moins que je ne reçois pas l'heure locale de l'utilisateur. Je sais que cela n'a pas d'importance, puisque personne d'autre que moi ne l'utilisera, mais je veux être rigoureux. J'ai regardé autour de moi et testé plusieurs choses, et je pense que le seul moyen de le faire est d'obtenir les millisecondes depuis 1er janvier 1970 00:00:00 UTC, puisque ce serait le même pour tout le monde.

Je fais ça comme ça:

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

Cela renvoie un nombre tel que 1294862756114.

Est-il possible de convertir 1294862756114 en une date plus lisible, comme DD/MM/YYYY HH:MM:SS?

Donc, fondamentalement, je recherche l'équivalent JavaScript de la fonction date(); de PHP.

177
Andrew
    var time = new Date().getTime();
    var date = new Date(time);
    alert(date.toString()); // Wed Jan 12 2011 12:42:46 GMT-0800 (PST)
270
Brian Donovan

Si vous souhaitez un formatage personnalisé pour votre date, je vous propose ne fonction simple pour elle:

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

Voici les jetons supportés:

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, [email protected]
//*** 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);
};
148
Phrogz

Vous pouvez simplement nous utiliser la bibliothèque Datejs afin de convertir la date au format souhaité.

J'ai couru des couples de test et ça marche.

Vous trouverez ci-dessous un extrait illustrant comment vous pouvez y parvenir:

var d = new Date(1469433907836);

d.toLocaleString(); // expected output: "7/25/2016, 1:35:07 PM"

d.toLocaleDateString(); // expected output: "7/25/2016"

d.toDateString();  // expected output: "Mon Jul 25 2016"

d.toTimeString(); // expected output: "13:35:07 GMT+0530 (India Standard Time)"

d.toLocaleTimeString(); // expected output: "1:35:07 PM"
31
Ravindra

Vous trouverez ci-dessous un extrait vous permettant de formater la date en une 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);
19
John K.

Essayez d'utiliser ce code:

var milisegundos = parseInt(data.replace("/Date(", "").replace(")/", ""));
var newDate = new Date(milisegundos).toLocaleDateString("en-UE");

Profitez-en!

5
Kenlly Acosta

Essayez d'utiliser ce code:

var datetime = 1383066000000; // anything
var date = new Date(datetime);
var options = {
        year: 'numeric', month: 'numeric', day: 'numeric',
    };

var result = date.toLocaleDateString('en', options); // 10/29/2013

Voir plus: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString

5
BBTurtle

Essaye celui-là :

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

Supposons que la date en millisecondes date est 1526813885836, vous pouvez donc accéder à la date en tant que chaîne avec cet exemple de code:

console.log(new Date(1526813885836).toString());

Pour plus de clarté, voir le code ci-dessous:

const theTime = new Date(1526813885836);
console.log(theTime.toString());
0
AmerllicA
/Date(1383066000000)/

function convertDate(data) {
    var getdate = parseInt(data.replace("/Date(", "").replace(")/", ""));
    var ConvDate= new Date(getdate);
    return ConvDate.getDate() + "/" + ConvDate.getMonth() + "/" + ConvDate.getFullYear();
}
0
Joh

utiliser datejs

new Date().toString('yyyy-MM-d-h-mm-ss');
0
smenon