Comment puis-je obtenir une date au format aaaa-mm-jj à partir d'une date ISO 8601 ?
Ma date 8601 est
2013-03-10T02:00:00Z
Comment puis-je obtenir ce qui suit?
2013-03-10
date.split("T")[0]
would do
Comment puis-je obtenir une date au format aaaa-mm-jj à partir d'une date ISO 8601 ?
Ma date 8601 est
2013-03-10T02:00:00Z
Comment puis-je obtenir ce qui suit?
2013-03-10
date.split("T")[0]
would do
Réponses:
Essaye ça
date = new Date('2013-03-10T02:00:00Z');
date.getFullYear()+'-' + (date.getMonth()+1) + '-'+date.getDate();//prints expected format.
Mettre à jour:-
Comme indiqué dans les commentaires, je mets à jour la réponse pour imprimer les zéros non significatifs pour la date et le mois si nécessaire.
date = new Date('2013-08-03T02:00:00Z');
year = date.getFullYear();
month = date.getMonth()+1;
dt = date.getDate();
if (dt < 10) {
dt = '0' + dt;
}
if (month < 10) {
month = '0' + month;
}
console.log(year+'-' + month + '-'+dt);
Recadrez simplement la chaîne:
var date = new Date("2013-03-10T02:00:00Z");
date.toISOString().substring(0, 10);
Ou si vous n'avez besoin que d'une date hors chaîne.
var strDate = "2013-03-10T02:00:00Z";
strDate.substring(0, 10);
YYYYY-MM-DD
dans l'année 10000. Pour éviter cela, vous pourriez diviser sur le T
caractère à la place. (Voir en.wikipedia.org/wiki/Year_10,000_problem )
Vous pouvez consulter Moment.js , Luxon , date-fns ou Day.js pour une manipulation de date agréable.
Ou extrayez simplement la première partie de votre chaîne ISO, elle contient déjà ce que vous voulez. Voici un exemple en fractionnant sur le T
:
"2013-03-10T02:00:00Z".split("T")[0] // "2013-03-10"
Moment.js gérera le formatage de la date pour vous. Voici comment l'inclure via une balise JavaScript, puis un exemple d'utilisation de Moment.js pour formater une date.
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>
moment("2013-03-10T02:00:00Z").format("YYYY-MM-DD") // "2013-03-10"
.toISODateString()
, parce que c'est un cas très fréquent ...
C'est ce que je fais pour obtenir une date uniquement:
let isoDate = "2013-03-10T02:00:00Z";
alert(isoDate.split("T")[0]);
Moment.js est une bibliothèque assez volumineuse à utiliser pour un seul cas d'utilisation. Je recommande d'utiliser à la date-fns
place. Il offre essentiellement la plupart des fonctionnalités de Moment.js avec une taille de paquet beaucoup plus petite et beaucoup formatting options
.
import format from 'date-fns/format'
format('2013-03-10T02:00:00Z', 'YYYY-MM-DD'); // 2013-03-10, YYYY-MM-dd for 2.x
Une chose à noter est que, comme il s'agit du format d'heure ISO 8601 , le navigateur convertit généralement l'heure UTC en fuseau horaire local. Bien que ce soit un cas d'utilisation simple où vous pouvez probablement le faire '2013-03-10T02:00:00Z'.substring(0, 10);
.
Pour des conversions plus complexes, date-fns
c'est la voie à suivre.
let isoDate = "2013-03-10T02:00:00Z";
var d = new Date(isoDate);
d.toLocaleDateString('en-GB'); // dd/mm/yyyy
d.toLocaleDateString('en-US'); // mm/dd/yyyy
Passez votre date dans l'objet date:
var d = new Date('2013-03-10T02:00:00Z');
d.toLocaleDateString().replace(/\//g, '-');
À tous ceux qui utilisent des tentatives de fractionnement, de tranche et d'autres chaînes pour obtenir la date, vous pouvez vous préparer à des échecs liés au fuseau horaire!
Une chaîne ISO a Zulu-Timezone et une date en fonction de ce fuseau horaire, ce qui signifie qu'elle peut utiliser une date un jour avant ou après le fuseau horaire réel, que vous devez prendre en compte dans votre chaîne de transformation.
Voir cet exemple:
const timeZoneRelatedDate = new Date(2020, 0, 14, 0, 0);
console.log(timeZoneRelatedDate.toLocaleDateString(
'ja-JP',
{
year: 'numeric',
month: '2-digit',
day: '2-digit'
}
).replace(/\//gi,'-'));
// RESULT: "2020-01-14"
console.log(timeZoneRelatedDate.toISOString());
// RESULT: "2020-01-13T23:00:00.000Z" (for me in UTC+1)
console.log(timeZoneRelatedDate.toISOString().slice(0,10));
// RESULT: "2020-01-13"
Si vous avez un objet date:
let date = new Date()
let result = date.toISOString().split`T`[0]
console.log(result)
ou
let date = new Date()
let result = date.toISOString().slice(0, 10)
console.log(result)
Pour étendre la solution de rk rk : Si vous souhaitez que le format inclue l'heure, vous pouvez ajouter le toTimeString()
à votre chaîne, puis supprimer la partie GMT, comme suit:
var d = new Date('2013-03-10T02:00:00Z');
var fd = d.toLocaleDateString() + ' ' + d.toTimeString().substring(0, d.toTimeString().indexOf("GMT"));
J'ai utilisé ceci:
HTMLDatetoIsoDate(htmlDate){
let year = Number(htmlDate.toString().substring(0, 4))
let month = Number(htmlDate.toString().substring(5, 7))
let day = Number(htmlDate.toString().substring(8, 10))
return new Date(year, month - 1, day)
}
isoDateToHtmlDate(isoDate){
let date = new Date(isoDate);
let dtString = ''
let monthString = ''
if (date.getDate() < 10) {
dtString = '0' + date.getDate();
} else {
dtString = String(date.getDate())
}
if (date.getMonth()+1 < 10) {
monthString = '0' + Number(date.getMonth()+1);
} else {
monthString = String(date.getMonth()+1);
}
return date.getFullYear()+'-' + monthString + '-'+dtString
}
Source: http://gooplus.fr/en/2017/07/13/angular2-typescript-isodate-to-html-date/
var d = new Date("Wed Mar 25 2015 05:30:00 GMT+0530 (India Standard Time)");
alert(d.toLocaleDateString());
let dt = new Date('2013-03-10T02:00:00Z');
let dd = dt.getDate();
let mm = dt.getMonth() + 1;
let yyyy = dt.getFullYear();
if (dd<10) {
dd = '0' + dd;
}
if (mm<10) {
mm = '0' + mm;
}
return yyyy + '-' + mm + '-' + dd;
Utilisez le code ci-dessous. Cela vous est utile.
let currentDate = new Date()
currentDate.toISOString()