Comment puis-je obtenir la date actuelle en JavaScript?
Utilisez new Date()
pour générer un nouvel objet Date
contenant la date et l'heure actuelles.
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1; //January is 0!
var yyyy = today.getFullYear();
if (dd < 10) {
dd = '0' + dd;
}
if (mm < 10) {
mm = '0' + mm;
}
today = mm + '/' + dd + '/' + yyyy;
document.write(today);
Cela vous donnera la date d'aujourd'hui au format mm/jj/aaaa.
Changez simplement today = mm +'/'+ dd +'/'+ yyyy;
au format que vous souhaitez.
var utc = new Date().toJSON().slice(0,10).replace(/-/g,'/');
document.write(utc);
Utilisez l'option replace
si vous souhaitez réutiliser la variable utc
, telle que new Date(utc)
, étant donné que Firefox et Safari ne reconnaissent pas la date avec des tirets.
MISE À JOUR! , défilement vers le bas
Si vous voulez quelque chose de simple et joli pour l'utilisateur final ... Also, fixed a small suffix issue in the first version below. Now properly returns suffix.
_var objToday = new Date(),
weekday = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'),
dayOfWeek = weekday[objToday.getDay()],
domEnder = function() { var a = objToday; if (/1/.test(parseInt((a + "").charAt(0)))) return "th"; a = parseInt((a + "").charAt(1)); return 1 == a ? "st" : 2 == a ? "nd" : 3 == a ? "rd" : "th" }(),
dayOfMonth = today + ( objToday.getDate() < 10) ? '0' + objToday.getDate() + domEnder : objToday.getDate() + domEnder,
months = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'),
curMonth = months[objToday.getMonth()],
curYear = objToday.getFullYear(),
curHour = objToday.getHours() > 12 ? objToday.getHours() - 12 : (objToday.getHours() < 10 ? "0" + objToday.getHours() : objToday.getHours()),
curMinute = objToday.getMinutes() < 10 ? "0" + objToday.getMinutes() : objToday.getMinutes(),
curSeconds = objToday.getSeconds() < 10 ? "0" + objToday.getSeconds() : objToday.getSeconds(),
curMeridiem = objToday.getHours() > 12 ? "PM" : "AM";
var today = curHour + ":" + curMinute + "." + curSeconds + curMeridiem + " " + dayOfWeek + " " + dayOfMonth + " of " + curMonth + ", " + curYear;
document.getElementsByTagName('h1')[0].textContent = today;
_
_<h1></h1>
_
UBBER UPDATE Après beaucoup de tergiversations, j'ai finalement GitHubbed et mis à jour cela avec la solution finale que j'utilise moi-même. Il a même eu des modifications de dernière minute pour le rendre plus doux! Si vous cherchez le vieux jsFiddle, s'il vous plaît voir ceci .
Cette mise à jour arrive 2 saveurs, encore relativement petites, bien que pas aussi petites que mon précédent, réponse originale. Si vous voulez extrêmement petit, allez avec ça.
Remarque: ceci est toujours moins gonflé que moment.js. Bien que moment.js soit agréable, il a trop de méthodes laïques, qui nécessitent un moment d'apprentissage comme s'il s'agissait d'une langue. Le mien utilise ici le même format commun que PHP: date .
Saveur 1
new Date().format(String)
Mes favoris personnels. Je connais le tabou mais fonctionne très bien sur l'objet Date. Sachez simplement que vous pouvez avoir d'autres objets dans l'objet Date.
_// use as simple as
new Date().format('m-d-Y h:i:s'); // 07-06-2016 06:38:34
_
Saveur 2
dateFormat(Date, String)
Méthode tout-en-un plus traditionnelle. A toutes les capacités de la précédente, mais est appelé via la méthode avec Date param.
_// use as simple as
dateFormat(new Date(), 'm-d-Y h:i:s'); // 07-06-2016 06:38:34
_
BONUS Flavour (requiert jQuery)
$.date(Date, String)
Il contient beaucoup plus qu'une simple optionformat
. Il étend l'objet Date de base et inclut des méthodes telles queaddDays
. Pour plus d'informations, veuillez vous reporter à la Git .
Dans ce mod, les caractères de format sont inspirés de PHP: date . Pour une liste complète, s'il vous plaît voir mon README
Ce mod a aussi une liste beaucoup plus longue de formats pré-créés. Pour utiliser un format prédéfini, entrez simplement son nom de clé. dateFormat(new Date(), 'pretty-a');
Comme vous pouvez le constater, vous pouvez utiliser un double _\
_ pour échapper à un caractère.
Si vous voulez juste une date sans information sur l'heure, utilisez:
var today = new Date();
today.setHours(0, 0, 0, 0);
document.write(today);
Le plus court possible.
Pour obtenir un format du type "2018-08-03":
let today = new Date().toISOString().slice(0, 10)
console.log(today)
Pour obtenir un format du type "03/08/2018":
let today = new Date().toLocaleDateString()
console.log(today)
En outre, vous pouvez passer locale en argument, par exemple toLocaleDateString("sr")
, etc.
Essaye ça:
var currentDate = new Date()
var day = currentDate.getDate()
var month = currentDate.getMonth() + 1
var year = currentDate.getFullYear()
document.write("<b>" + day + "/" + month + "/" + year + "</b>")
Le résultat sera comme
15/2/2012
Si vous recherchez un contrôle beaucoup plus granulaire sur les formats de date, je vous recommande vivement de vérifier momentjs. Superbe bibliothèque - et seulement 5 Ko . http://momentjs.com/
Vous pouvez utiliser moment.js: http://momentjs.com/
var m = moment().format("DD/MM/YYYY");
document.write(m);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>
var d = (new Date()).toString().split(' ').splice(1,3).join(' ');
document.write(d)
Pour le décomposer en étapes:
(new Date()).toString()
donne "ven 28 juin 2013 15:30:18 GMT-0700 (PDT)"
(new Date()).toString().split(' ')
divise la chaîne ci-dessus sur chaque espace et renvoie un tableau comme suit: ["ven", "juin", "28", "2013", "15:31:14", "GMT-0700", " "]
(new Date()).toString().split(' ').splice(1,3).join(' ')
prend les deuxième, troisième et quatrième valeurs du tableau ci-dessus, les joint avec des espaces et renvoie une chaîne "28 juin 2013"
Cela fonctionne à chaque fois:
var now = new Date();
var day = ("0" + now.getDate()).slice(-2);
var month = ("0" + (now.getMonth() + 1)).slice(-2);
var today = now.getFullYear() + "-" + (month) + "-" + (day);
document.write(today);
Version plus propre, plus simple:
new Date().toLocaleString();
Le résultat varie en fonction de l'utilisateur locale:
27/02/2017, 09:15:41
Vous pouvez utiliser Date.js library qui étend l’objet Date, vous pouvez donc utiliser la méthode .today ().
Vous pouvez obtenir la date actuelle en appelant la méthode statique comme ceci:
var now = Date.now()
référence:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/now
La réponse de Varun ne prend pas en compte TimezoneOffset . Voici une version qui fait:
var d = new Date()
new Date(d.getTime() - d.getTimezoneOffset() * 60000).toJSON().slice(0, 10) // 2015-08-11
La TimezoneOffset
est en minutes, alors que le constructeur Date prend des millisecondes, donc la multiplication par 60000
.
La réponse la plus courte est: new Date().toJSON().slice(0,10)
Si vous voulez un format DD/MM/YYYY
simple, je viens de proposer cette solution simple, bien qu’elle ne prévoie pas les zéros manquants.
var d = new Date();
document.write( [d.getDate(), d.getMonth()+1, d.getFullYear()].join('/') );
new Date().toDateString();
Résultat:
"Mer 3 fév 2016"
new Date().toISOString().slice(0,10);
fonctionnerait aussi
Une solution JS sur une ligne:
tl; dr
var todaysDate = new Date(Date.now()).toLocaleString().slice(0,3).match(/[0-9]/i) ? new Date(Date.now()).toLocaleString().split(' ')[0].split(',')[0] : new Date(Date.now()).toLocaleString().split(' ')[1] + " " + new Date(Date.now()).toLocaleString().split(' ')[2] + " " + new Date(Date.now()).toLocaleString().split(' ')[3];
Edge, dernière version, et retour de chrometodaysDate = "2/7/2017"
"fonctionne" * dans IE10 +
EDIT 2/7/2017
J'ai découvert que IE10 et IE Edge font les choses un peu différemment .. allez comprendre . Avec new Date(Date.now()).toLocaleString()
en entrée,
IE10 renvoie:
"Tuesday, February 07, 2017 2:58:25 PM"
Je pourrais écrire une grande fonction longue et FTFY. Mais vous devez vraiment utiliser moment.js pour ce genre de choses. Mon script nettoie simplement cela et vous donne la notation étendue traditionnelle américaine: > todaysDate = "March 06, 2017"
IE Edge renvoie:
"2/7/2017 2:59:27 PM"
Bien sûr, cela ne pourrait pas être aussi facile. La chaîne de date de Edge comporte des "•" caractères invisibles entre chaque caractère visible. Nous allons donc non seulement vérifier si le premier caractère est un nombre, mais les trois premiers caractères, car il s'avère que chaque caractère dans toute la plage de dates sera éventuellement un point ou une barre oblique à un moment donné. Donc, pour que les choses restent simples, il suffit de .slice () les trois premiers caractères (petit tampon contre les futures manigances), puis de vérifier les nombres. Il est à noter que ces points invisibles pourraient éventuellement persister dans votre code. Je pourrais peut-être creuser dans ce domaine si vous avez des projets plus ambitieux que la simple impression de cette chaîne à votre avis.
∴ one-liner mis à jour:
var todaysDate = new Date(Date.now()).toLocaleString().slice(0,3).match(/[0-9]/i) ? new Date(Date.now()).toLocaleString().split(' ')[0].split(',')[0] : new Date(Date.now()).toLocaleString().split(' ')[1] + " " + new Date(Date.now()).toLocaleString().split(' ')[2] + " " + new Date(Date.now()).toLocaleString().split(' ')[3];
Ça craint de lire. Que diriez-vous:
var dateString = new Date(Date.now()).toLocaleString();
var todaysDate = dateString.slice(0,3).match(/[0-9]/i) ? dateString.split(' ')[0].split(',')[0] : dateString.split(' ')[1] + " " + dateString.split(' ')[2] + " " + dateString.split(' ')[3];
RÉPONSE ORIGINALE
J'ai un one-liner pour vous:
new Date(Date.now()).toLocaleString().split(', ')[0];
et [1]
vous donnera l'heure de la journée.
Vous pouvez utiliser ceci
<script>
function my_curr_date() {
var currentDate = new Date()
var day = currentDate.getDate();
var month = currentDate.getMonth() + 1;
var year = currentDate.getFullYear();
var my_date = month+"-"+day+"-"+year;
document.getElementById("dateField").value=my_date;
}
</script>
Le HTML est
<body onload='return my_curr_date();'>
<input type='text' name='dateField' id='dateField' value='' />
</body>
Si vous utilisez jQuery. Essayez cette doublure:
$.datepicker.formatDate('dd/mm/yy', new Date());
Voici la convention pour formater la date
Voici la référence pour jQuery datepicker
Vous pouvez commander ceci
var today = new Date();
today = parseInt(today.getMonth()+1)+'/'+today.getDate()+'/'+today.getFullYear()+"\nTime : "+today.getHours()+":"+today.getMinutes()+":"+today.getSeconds();
document.write(today);
Et voir la documentation du constructeur Date () . link
var dateTimeToday = new Date();
var dateToday = new Date(
dateTimeToday.getFullYear(),
(dateTimeToday.getMonth() + 1) /*Jan = 0! */,
dateTimeToday.getDate(),
0,
0,
0,
0);
Cela peut vous aider
var date = new Date();
console.log(date.getDate()+'/'+(date.getMonth()+1)+'/'+date.getFullYear());
Ceci imprimera la date actuelle au format jj/mm/aaaa
Je ne sais pas si cela aidera quelqu'un, mais je l'utilise pour obtenir l'objet Date aujourd'hui.
new Date( 3600000*Math.floor(Date.now()/3600000) )
Je pense que c'est une vieille question mais le moyen le plus simple serait le suivant:
var date = new Date();
var TimeStamp = date.toLocaleString();
function CurrentTime(){
alert(TimeStamp);
}
Cela va saisir l'heure actuelle, la transmettre à une chaîne en fonction de l'emplacement, puis vous pouvez appeler la fonction CurrentTime pour afficher l'heure. Pour moi, ce serait le moyen le plus efficace d’obtenir un horodatage de quelque chose.
2,39 Ko minifiée. Un fichier. https://github.com/rhroyston/clock-js
J'essaie juste d'aider ...
Si vous recherchez un contrôle beaucoup plus granulaire sur les formats de date, je vous recommande vivement de vérifier date-FNS. Une bibliothèque formidable - beaucoup plus petite que moment.js et son approche basée sur les fonctions le rendent beaucoup plus rapide que les autres bibliothèques basées sur les classes. Fournir un grand nombre d'opérations nécessaires sur les dates.
Jolie impression la date comme ça.
1er juin 2015 11:36:48
C'est bien pour avoir une date formatée
let date = new Date().toLocaleDateString("en", {year:"numeric", day:"2-digit", month:"2-digit"});
console.log(date);
J'ai pensé coller ce que j'utilise pour une date réelle:
function realDate(date){
return date.getDate() + "/" + (date.getMonth()+1) + "/" + date.getUTCFullYear();
}
var ourdate = realDate(new Date);
Cela fait beaucoup;
var today = new Date();
var date = today.getFullYear()+'/'+(today.getMonth()+1)+'/'+today.getDate();
(function() { var d = new Date(); return new Date(d - d % 86400000); })()
Essayez ceci ...__ HTML
<p id="date"></p>
JS
<script>
var currentDate = new Date()
var day = currentDate.getDate()
var month = currentDate.getMonth() + 1
var year = currentDate.getFullYear()
document.getElementById("date").innerHTML =("<b>" + day + "/" + month + "/" + year + "</b>")
</script>
Démo de travail pour la date actuelle
Ceci est mon préféré actuel, car il est à la fois flexible et modulaire. C'est une collection de (au moins) trois fonctions simples:
/**
* Returns an array with date / time information
* Starts with year at index 0 up to index 6 for milliseconds
*
* @param {Date} date date object. If falsy, will take current time.
* @returns {[]}
*/
getDateArray = function(date) {
date = date || new Date();
return [
date.getFullYear(),
exports.pad(date.getMonth()+1, 2),
exports.pad(date.getDate(), 2),
exports.pad(date.getHours(), 2),
exports.pad(date.getMinutes(), 2),
exports.pad(date.getSeconds(), 2),
exports.pad(date.getMilliseconds(), 2)
];
};
Voici la fonction pad:
/**
* Pad a number with n digits
*
* @param {number} number number to pad
* @param {number} digits number of total digits
* @returns {string}
*/
exports.pad = function pad(number, digits) {
return new Array(Math.max(digits - String(number).length + 1, 0)).join(0) + number;
};
Enfin, je peux soit construire ma chaîne de date à la main, soit utiliser une simple fonction pour le faire pour moi:
/**
* Returns nicely formatted date-time
* @example 2015-02-10 16:01:12
*
* @param {object} date
* @returns {string}
*/
exports.niceDate = function(date) {
var d = exports.getDateArray(date);
return d[0] + '-' + d[1] + '-' + d[2] + ' ' + d[3] + ':' + d[4] + ':' + d[5];
};
/**
* Returns a formatted date-time, optimized for machines
* @example 2015-02-10_16-00-08
*
* @param {object} date
* @returns {string}
*/
exports.roboDate = function(date) {
var d = exports.getDateArray(date);
return d[0] + '-' + d[1] + '-' + d[2] + '_' + d[3] + '-' + d[4] + '-' + d[5];
};
Cela peut vous aider
let d = new Date();
this.dateField = element(by.xpath('xpath here'));
this.datetField.sendKeys((d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear());
Cette réponse s'adresse aux personnes recherchant une date au format ISO-8601 et au fuseau horaire . C'est un JS pur pour ceux qui ne souhaitent inclure aucune bibliothèque de dates.
var date = new Date();
var timeZone = date.toString();
//Get timezone ( 'GMT+0200' )
var timeZoneIndex = timeZone.indexOf('GMT');
//Cut optional string after timezone ( '(heure de Paris)' )
var optionalTimeZoneIndex = timeZone.indexOf('(');
if(optionalTimeZoneIndex != -1){
timeZone = timeZone.substring(timeZoneIndex, optionalTimeZoneIndex);
}
else{
timeZone = timeZone.substring(timeZoneIndex);
}
//Get date with JSON format ( '2019-01-23T16:28:27.000Z' )
var formattedDate = new Date(date.getTime() - (date.getTimezoneOffset() * 60000)).toJSON();
//Cut ms
formattedDate = formattedDate.substring(0,formattedDate.indexOf('.'));
//Add timezone
formattedDate = formattedDate + ' ' + timeZone;
console.log(formattedDate);
Imprimez quelque chose comme ça dans la console:
2019-01-23T17: 12: 52 GMT + 0100
JSFiddle: https://jsfiddle.net/n9mszhjc/4/
Vous pouvez obtenir en utilisant new Date()
à la date actuelle du navigateur en JavaScript.
Mais nous avons actuellement un bon plugin pour analyser, valider, manipuler et afficher les dates et les heures en JavaScript} en utilisant moment.js
Vous pouvez utiliser l’API DATE indiquée ci-dessous pour l’utilisation quotidienne du formatage de la date, ainsi que pour l’obtention de la date actuelle, de la veille, etc. par exemple.
var dt = new Date();
/// ANY DATE YOU WANT -- dt = new Date(""July 21, 1983 01:15:00"")
dateObj = dt.getFormattedDate();
alert( dateObj.isToday() );
alert( dateObj.todayDay() );
alert( dateObj.monthNameDayYear() );
(function () {
fnDateProcessor = function () {
var that = this;
return {
yyyymmdd: function (separator) {
var fdate = this.formatDate(true, true) ,
separator = separator ? separator : "-";
return fdate.year + separator + fdate.month + separator + fdate.day;
},
monthNameDayYear: function () {
var fdate = this.formatDate(true, true);
return fdate.monthName + " " + fdate.day + ", " + fdate.year;
},
ddmmyyyy: function (separator) {
var fdate = this.formatDate(true, true) ,
separator = separator ? separator : "/";
return fdate.day + separator + fdate.month + separator + fdate.year;
},
meridianTime: function () {
var fdate = this.formatDate();
return fdate.hour + ":" + fdate.minute + " " + fdate.meridian;
},
monthDay: function (separator) {
var fdate = this.formatDate();
separator = checkSeparator(separator);
return fdate.monthName.substring(0, 3) + separator + fdate.day;
},
weekMonthDayYear: function () {
var fdate = this.formatDate();
//separator = checkSeparator(separator);
return fdate.weekDay + " " + fdate.monthName.substring(0, 3) +
fdate.day + " ," + fdate.year;
},
timeZoneInclusive: function () {
return new Date(that);
},
todayDay: function () { return new Date().getDate(); },
todayMonth: function () { return new Date().getMonth() + 1; },
dateDay: function () { return this.formatDate().day; },
dateMonth: function () { return this.formatDate().month; },
isToday: function () { return this.sameDate(new Date()); },
isYesterday: function () {
d = new Date(); d.setDate(d.getDate() - 1);
return this.sameDate(d);
},
formatDate: function () {
var zeroPaddedMnth = true, zeroPaddedDay = false,
zeroPaddedHr = false, zeroPaddedMin = true;
// Possible to take Options arg that overide / merge to defaults
var monthNames = [
"January", "February", "March",
"April", "May", "June", "July",
"August", "September", "October",
"November", "December"
];
var weekDays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
var day = getFormattedDay(that.getDate(), zeroPaddedDay);
var monthIndex = that.getMonth();
var month = getFormattedMonth(monthIndex + 1, zeroPaddedMnth);
var year = that.getFullYear();
var wkDay = that.getDay();
var hour = getFormattedHour(that.getHours(), zeroPaddedHr);
var minute = getFormattedMinute(that.getMinutes(), zeroPaddedMin);
var meridian = getMeridian(that.getHours());
return {
"day": day, "monthName": monthNames[monthIndex], "month": month,
"weekDay": weekDays[wkDay], "year": year, "hour": hour, "minute": minute,
"meridian": meridian
};
},
compareDate: function (d2) { /// validates if caller is less than argument
d2 = _isString(d2) ? new Date(d2) : d2;
return !this.sameDate(d2)
&& typeof d2 != "number"
? that < d2 : false;
},
sameDate: function (d) {
return that.getFullYear() === d.getFullYear()
&& that.getDate() === d.getDate()
&& that.getMonth() === d.getMonth();
},
dateAfter: function (separator) {
var fdate = this.formatDate();
var separator = separator ? separator : "-";
return fdate.year + separator + fdate.month + separator + (fdate.day + 1);
}
};
};
function _isString(obj) {
var toString = Object.prototype.toString;
return toString.call(obj) == '[object String]';
}
function checkSeparator(separator) {
// NOT GENERIC ... NEEDS REVISION
switch (separator) {
case " ": sep = separator; break;
case ",": sep = " ,"; break;
default:
sep = " "; break;
}
return sep;
}
function getFormattedHour(h, zeroPadded) {
h = h % 12;
h = h ? h : 12; // 12 instead of 00
return zeroPadded ? addZero(h) : h;
}
function getFormattedMinute(m, zeroPadded) {
return zeroPadded ? addZero(m) : m;
}
function getFormattedDay(dd, zeroPadded) {
return zeroPadded ? addZero(dd) : dd;
}
function getFormattedMonth(mm, zeroPadded) {
return zeroPadded ? addZero(mm) : mm;
}
function getMeridian(hr) {
return hr >= 12 ? 'PM' : 'AM';
}
function addZero(i) {
if (i < 10) {
i = "0" + i;
}
return i;
}
Date.prototype.getFormattedDate = fnDateProcessor;
} ());
Si vous êtes satisfait du format Sun Jan 24 2016 21:23:07 GMT+0100 (CET)
, vous pouvez simplement utiliser ce code:
var today = new Date();
Si vous souhaitez formater votre sortie, envisagez d'utiliser Date.prototype.toLocaleDateString()
:
var today = new Date().toLocaleDateString('de-DE', {
weekday: 'long',
year: 'numeric',
month: 'long',
day: 'numeric'
});
Si vous avez exécuté ce code aujourd'hui (24 janvier 2016) sur un navigateur moderne, la chaîne Sonntag, 24. Januar 2016
serait générée. Les anciens navigateurs peuvent générer un résultat différent, par exemple. IE <11 ne prend pas en charge les arguments de paramètres régionaux ou d'options.
Si Date.prototype.toLocaleDateString()
n'est pas assez flexible pour répondre à vos besoins, vous pouvez envisager de créer un objet Date personnalisé ressemblant à ceci:
var DateObject = (function() {
var monthNames = [
"January", "February", "March",
"April", "May", "June", "July",
"August", "September", "October",
"November", "December"
];
var date = function(str) {
this.set(str);
};
date.prototype = {
set : function(str) {
var dateDef = str ? new Date(str) : new Date();
this.day = dateDef.getDate();
this.dayPadded = (this.day < 10) ? ("0" + this.day) : "" + this.day;
this.month = dateDef.getMonth() + 1;
this.monthPadded = (this.month < 10) ? ("0" + this.month) : "" + this.month;
this.monthName = monthNames[this.month - 1];
this.year = dateDef.getFullYear();
}
};
return date;
})();
Si vous avez inclus ce code et exécuté new DateObject()
aujourd'hui (24 janvier 2016), un objet présentant les propriétés suivantes sera généré:
day: 24
dayPadded: "24"
month: 1
monthPadded: "01"
monthName: "January"
year: 2016
Si vous cherchez à formater en chaîne.
statusUpdate = "time " + new Date(Date.now()).toLocaleTimeString();
sortie "heure 11:30:53"
Avec la possibilité de rendre au format personnalisé et d'utiliser le nom du mois dans différents environnements locaux
const locale = 'en-us';
const d = new Date(date);
const day = d.getDate();
const month = d.toLocaleString(locale, { month: 'long' });
const year = d.getFullYear();
const time = d.toLocaleString(locale, { hour12: false, hour: 'numeric', minute: 'numeric'});
return `${month} ${day}, ${year} @ ${time}`; // May 5, 2019 @ 23:41