Maison > interface Web > js tutoriel > le corps du texte

Méthodes d'encapsulation couramment utilisées pour les objets Date et solutions aux problèmes rencontrés

不言
Libérer: 2019-03-21 11:06:52
avant
1915 Les gens l'ont consulté

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
  "
Copier après la connexion

Convertir le format de date en horodatage et l'horodatage en format de date

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;
    }
    "
Copier après la connexion

Comparez le nombre de jours entre deux dates

/**
   * @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;
}
Copier après la connexion

Déterminez le nombre de jours dans une année

    // 闰年为366天(2月中多一天),平年为365天。
   // 闰年有两种: 1)普通闰年:能被4整除但不能被100整除的年份为普通闰年。
   //            2)世纪闰年:能被400整除的为世纪闰年。
   function getYearAllDay(year) {
       return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0 ? 366 : 365;
   }
Copier après la connexion

Obtenez le nombre total de jours dans un mois dans une année donnée

  // 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();
  }
Copier après la connexion
Cet article est terminé ici. Pour plus d'autres contenus passionnants, vous pouvez suivre la colonne Vidéo du didacticiel JavaScript du site Web PHP chinois !

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!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal