JS 学习

解决 parseInt()的神秘行为:parseInt(0.0000005) => 5

parseInt()是JavaScript的内置函数,用于解析数字字符串中的整数。

parseInt()的神秘行为

parseInt()的第一个参数如果不是字符串,将执行ToString操作,将其转换为字符串,然后再将该字符串解析为整数值

parseInt(0.5); // => 0   => '0.5' 
parseInt(0.05); // => 0  => '0.05' 
parseInt(0.005); // => 0  => '0.005'
parseInt(0.0005); // => 0   => '0.0005'
parseInt(0.00005); // => 0   => '0.00005'
parseInt(0.000005); // => 0   => '0.000005'
parseInt(0.0000005); // => 5   => '5e-7'

因为parseInt()总是将其第一个参数转换为字符串,所以小于10 -6的浮点数将以指数表示法编写。然后parseInt()从float的指数表示法中提取整数!

获取当月有几周以及日期

// now_month: 2022-01
  export function allWeeks(now_month) {
    let week_array = [];
    let today = new Date(Date.parse(now_month));
    let year = today.getFullYear();
    let month = today.getMonth();
    let i = 0;
    let start = new Date(year, month, 1); // 得到当月第一天
    let end = new Date(year, month + 1, 0); // 得到当月最后一天
    let start_day = start.getDay(); // 当月第一天是周几
    // 从当月的星期一到星期天(可 下周)
    // switch (start_day) {
    //   case 0:
    //     i = 2;
    //     break;
    //   case 1:
    //     i = 1;
    //     break;
    //   case 2:
    //     i = 7;
    //     break;
    //   case 3:
    //     i = 6;
    //     break;
    //   case 4:
    //     i = 5;
    //     break;
    //   case 5:
    //     i = 4;
    //     break;
    //   case 6:
    //     i = 3;
    //     break;
    // }
    // while (new Date(year, month, i) <= end) {
    //   week_array.push([
    //     formatDate(new Date(year, month, i)),
    //     formatDate(new Date(year, month, i + 6)),
    //   ]);
    //   i += 7;
    // }
    // return week_array;

    // 从当月的1号(不管是星期几) 到当月的最后一天
    switch (start_day) {
      case 0:
        i = 0 - 5;
        break;
      case 1:
        i = 1;
        break;
      case 2:
        i = 0;
        break;
      case 3:
        i = 0 - 1;
        break;
      case 4:
        i = 0 - 2;
        break;
      case 5:
        i = 0 - 3;
        break;
      case 6:
        i = 0 - 4;
        break;
    }
    while (new Date(year, month, i + 6) <= end) {
      if (new Date(year, month, i) > start) {
        week_array.push([
          formatDate(new Date(year, month, i)),
          formatDate(new Date(year, month, i + 6))
        ]);
      } else {
        week_array.push([
          formatDate(start),
          formatDate(new Date(year, month, i + 6))
        ]);
      }
      i += 7;
      if (new Date(year, month, i + 6) > end) {
        week_array.push([
          formatDate(new Date(year, month, i)),
          formatDate(end)
        ]);
      }
    }

    week_array = week_array.filter(v => {
      return v[0] <= v[1]
    })
    return week_array;
  }

  // 格式化date
  function formatDate(date) {
    date = new Date(date);
    var y = date.getFullYear();
    var m = date.getMonth() + 1;
    m = m < 10 ? "0" + m : m;
    var d = date.getDate();
    d = d < 10 ? "0" + d : d;
    return y + "." + m + "." + d;
  }

获取两个日期之间的所有日期

export function getAllDate(begin, end) {
    var arr1 = begin.split(".");
    var arr2 = end.split(".");
    var arr1_ = new Date();
    var arrTime = [];
    arr1_.setUTCFullYear(arr1[0], arr1[1] - 1, arr1[2]);
    var arr2_ = new Date();
    arr2_.setUTCFullYear(arr2[0], arr2[1] - 1, arr2[2]);
    var unixDb = arr1_.getTime();
    var unixDe = arr2_.getTime();
    for (let i = unixDb; i <= unixDe; ) {
      arrTime.push(datetimeparse(i, "YYYY/MM/DD"));
      i = i + 24 * 60 * 60 * 1000;
    }
    return arrTime;
  }
  // 获取两个日期之间的所有日期
  function datetimeparse(timestamp, format, prefix) {
    if (typeof timestamp == "string") {
      timestamp = Number(timestamp);
    }
    //转换时区
    let currentZoneTime = new Date(timestamp);
    let currentTimestamp = currentZoneTime.getTime();
    let offsetZone = currentZoneTime.getTimezoneOffset() / 60; //如果offsetZone>0是西区,西区晚
    let offset = null;
    //客户端时间与服务器时间保持一致,固定北京时间东八区。
    offset = offsetZone + 8;
    currentTimestamp = currentTimestamp + offset * 3600 * 1000;

    let newtimestamp = null;
    if (currentTimestamp) {
      if (currentTimestamp.toString().length === 13) {
        newtimestamp = currentTimestamp.toString();
      } else if (currentTimestamp.toString().length === 10) {
        newtimestamp = currentTimestamp + "000";
      } else {
        newtimestamp = null;
      }
    } else {
      newtimestamp = null;
    }
    let dateobj = newtimestamp
      ? new Date(parseInt(newtimestamp))
      : new Date();
    let YYYY = dateobj.getFullYear();
    let MM =
      dateobj.getMonth() > 8
        ? dateobj.getMonth() + 1
        : "0" + (dateobj.getMonth() + 1);
    let DD =
      dateobj.getDate() > 9 ? dateobj.getDate() : "0" + dateobj.getDate();
    let HH =
      dateobj.getHours() > 9 ? dateobj.getHours() : "0" + dateobj.getHours();
    let mm =
      dateobj.getMinutes() > 9
        ? dateobj.getMinutes()
        : "0" + dateobj.getMinutes();
    let ss =
      dateobj.getSeconds() > 9
        ? dateobj.getSeconds()
        : "0" + dateobj.getSeconds();
    let output = "";
    let separator = "/";
    if (format) {
      separator = format.match(/-/) ? "-" : "/";
      output += format.match(/yy/i) ? YYYY : "";
      output += format.match(/MM/)
        ? (output.length ? separator : "") + MM
        : "";
      output += format.match(/dd/i)
        ? (output.length ? separator : "") + DD
        : "";
      output += format.match(/hh/i) ? (output.length ? " " : "") + HH : "";
      output += format.match(/mm/) ? (output.length ? ":" : "") + mm : "";
      output += format.match(/ss/i) ? (output.length ? ":" : "") + ss : "";
    } else {
      output += YYYY + separator + MM + separator + DD;
    }
    output = prefix ? prefix + output : output;

    return newtimestamp ? output : "";
  }

大屏自适应

https://blog.csdn.net/weixin_44533589/article/details/120409419?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_ecpm_v1~rank_v31_ecpm-2-120409419.pc_agg_new_rank&utm_term=vue%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96%E5%A4%A7%E5%B1%8F%E8%87%AA%E9%80%82%E5%BA%94&spm=1000.2123.3001.4430

查看demo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值