Ce que cet article vous apporte concerne les méthodes d'encapsulation couramment utilisées des objets Date et les solutions aux problèmes rencontrés. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
J'utilise l'objet Date en JS depuis longtemps, mais je n'ai jamais enregistré les fonctions d'encapsulation couramment utilisées et les pièges rencontrés. Je les enregistrerai quand j'aurai le temps aujourd'hui afin de pouvoir les utiliser directement. la prochaine fois. et rappelez-vous les pièges que vous avez rencontrés. S'il y a quelque chose qui ne va pas, j'espère que vous pourrez le signaler, je vous en serai très reconnaissant.
Lors de la conversion d'une date (sans heures, minutes et secondes) en horodatage, la date est convertie en heure lorsqu'elle est concaténée avec '-' (2019-01-01) et '/' (2019/01 /01) Les résultats du poke sont différents
Afin d'éviter que tout le monde ne voie trop d'exemples et ne s'ennuie, j'arriverai d'abord à la conclusion.
Conclusion :
1) Si les dates sont reliées par '-', lorsque le mois et le jour sont inférieurs à 9 et qu'un 0 est ajouté devant, alors lors de la conversion en horodatage, l'heure sera convertie à par défaut 8h du matin du jour
2) Si les dates sont reliées par '-', lorsque le mois et le jour sont inférieurs à 9 et qu'il y a un 0 devant moins de 9, alors elle sera convertie en horodatage. L'heure est convertie à 8h du jour par défaut
3) Si les dates sont reliées par '-', lorsque le mois et le jour sont tous deux inférieurs à 9 et qu'un seul est précédé. par un 0, alors elle sera convertie en horodatage. L'heure sera convertie par défaut à 12 heures du matin du jour, soit 00:00
4) Si les dates sont connectées par '-' , lorsque le mois et le jour sont tous deux supérieurs à 9, alors ils seront convertis en horodatages. L'heure sera convertie à 8 heures du matin par défaut
5) Si les dates sont connectées à l'aide de '/', alors une fois converties en horodatages, ils ne seront convertis qu'à 00h00 du jour
Résumé : Dans Lors de la conversion de dates en horodatages, si les heures et les minutes ne sont pas définies, il est préférable d'utiliser '/' pour se connecter afin d'éviter d'avoir différents horodatages pour la même date lorsqu'ils sont écrits de différentes manières
Ce qui suit est un exemple pour prouver la conclusion :
" let time1 = new Date('2019-03-03').getTime(); let time2 = new Date('2019/3/3').getTime(); console.log('获取时间') console.log(time1) console.log(time2) console.log( (time1-time2) / 1000 /60 /60 ) // 8 // 根据本地格式,把Date对象的时间转换为字符串 上午12:00:00也就是 00:00:00 console.log(new Date('2019-03-03').toLocaleString()) // 2019/3/3 上午8:00:00 console.log(new Date('2019-03-12').toLocaleString()) // 2019/3/12 上午8:00:00 console.log(new Date('2019-11-03').toLocaleString()) // 2019/11/3 上午8:00:00 console.log(new Date('2019-3-03').toLocaleString()) // 2019/3/3 上午12:00:00 console.log(new Date('2019-03-3').toLocaleString()) // 2019/3/3 上午12:00:00 console.log(new Date('2019-11-13').toLocaleString()) // 2019/11/13 上午8:00:00 console.log(new Date('2019/03/03').toLocaleString()) // 2019/3/3 上午12:00:00 console.log(new Date('2019/3/3').toLocaleString()) // 2019/3/3 上午12:00:00 console.log(new Date('2019/03/3').toLocaleString()) // 2019/3/3 上午12:00:00 console.log(new Date('2019/3/03').toLocaleString()) // 2019/3/3 上午12:00:00 console.log(new Date('2019/03/12').toLocaleString()) // 2019/3/12 上午12:00:00 console.log(new Date('2019/11/03').toLocaleString()) // 2019/11/3 上午12:00:00 "
1. 将日期格式转换为时间戳的三种方法 "javascript let dateStr = new Date('2019-3-20 18:59:39:123'); let timestamp1 = dateStr.getTime(); // 1553079579123 let timestamp2 = dateStr.valueOf(); // 1553079579123 let timestamp3 = Date.parse(dateStr); // 1553079579000 " date.getTime()、date.valueOf()会精确到毫秒,而Date.parse(date)只能精确到秒,毫秒用000替代 2. 将时间戳转换为日期格式 "javascript function dateFormat(timestamp) { timestamp = (timestamp + '' ).length > 10 ? timestamp : timestamp * 1000; //判断时间戳为几位,10位时加上毫秒,13为的则不管 let date = new Date(timestamp); let year = date.getFullYear(); let month = date.getMonth() + 1 > 9 ? date.getMonth() + 1 : '0' + (date.getMonth() + 1); // 月份从0开始,0~11, 所以显示时要 +1 let day = date.getDate() > 9 ? date.getDate() : '0' + date.getDate() ; let hour = date.getHours() > 9 ? date.getHours() : '0' + date.getHours() ; let minutes = date.getMinutes() > 9 ? date.getMinutes() : '0' + date.getMinutes(); let seconds = date.getSeconds() > 9 ? date.getSeconds() : '0' + date.getSeconds(); return year + '-' + month + '-' + day + ' ' + hour + ':' + minutes + ':' + seconds; } "
/** * @method 计算两个日期之间有几天,包括第一天 * @param beginTime 开始时间的日期 '2019-3-19' || '2019/3/19' * @param endTime 结束时间的日期 '2019-3-20' || '2019/3/19' */ getIntervalDay('2019-03-03', '2019-03-8'); // 若是没有用 正则将格式转换的话得到的结果是5天,转换后是6天 function getIntervalDay(beginTime, endTime) { // 先利用将其转换为统一的格式,因为 '-' 格式下的时间戳转换的结果不一致,原因在本文的开头 beginTime = beginTime.replace(/\-/g, '/'); endTime = endTime.replace(/\-/g, '/'); let time1 = new Date(beginTime).getTime(); let time2 = new Date(endTime).getTime(); // console.log(beginTime) // console.log(endTime) let second = time2 - time1; let day = parseInt(second / (1000 * 60 * 60 * 24)) + 1; // 当天也算进去 return day; }
// 闰年为366天(2月中多一天),平年为365天。 // 闰年有两种: 1)普通闰年:能被4整除但不能被100整除的年份为普通闰年。 // 2)世纪闰年:能被400整除的为世纪闰年。 function getYearAllDay(year) { return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0 ? 366 : 365; }
// date格式为 'xxxx-xx-xx' 'xxxx/xx/xx' 'xxxx/xx' 'xxxx-xx' function getMonthAllDay(date) { date = new Date(date); let year = date.getFullYear(); let month = date.getMonth() + 1; // 从 Date 对象返回月份 (0 ~ 11)。 let nextMonth = year + '-' + (month + 1); let newDate = new Date(nextMonth); newDate.setDate(0); // 利用设置日期时从1~31设置,当设置为0时,即上个月的最后一天 return newDate.getDate(); }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!