js 时间处理

哈哈哈 等级 442 2 0

时间戳转formdate格式 13 || 16 位

    function timeStampToFormdate(timestamp) {
        if (!timestamp) {
            return ''
        }
        var date = timestamp.toString().length == "13" ? new Date(timestamp) : new Date(timestamp * 1000); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
        var Y = date.getFullYear() + "-";
        var M = (date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1) + "-";
        var D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate());
        var h = date.getHours() < 10 ? "0" + date.getHours() + ":" : date.getHours() + ":";
        var m = date.getMinutes() < 10 ? "0" + date.getMinutes() + ':' : date.getMinutes() + ":";
        var s = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
        return Y + M + D + ' ' + h + m + s;
    }
    console.log(timeStampToFormdate(new Date().getTime()));

获取距离当前时间多少天前的时间

 function manyDayBeforeNowDay(days) {
        if (days * 1) {
            return timeStampToFormdate(new Date().getTime() - days * 60 * 60 * 24 * 1000)
        } else {
            return ''
        }
    }
    console.log(manyDayBeforeNowDay(2));

时间格式化返回年月日时分秒 格式自己拼

/**
*如果没有传入时间,就返回当前时间的格式化数据
*/
function dateFormat(date) {
!date && date=new Date();
  if (date) {
    let newDate = new Date(date);
    let n = newDate.getFullYear();
    let y = (newDate.getMonth() + 1 < 10 ? '0' + (newDate.getMonth() + 1) : newDate.getMonth() + 1);
    let r = (newDate.getDate() < 10 ? '0' + newDate.getDate() : newDate.getDate());
    let s = (newDate.getHours() < 10 ? '0' + newDate.getHours() : newDate.getHours());
    let f = (newDate.getMinutes() < 10 ? '0' + newDate.getMinutes() : newDate.getMinutes());
    let m = (newDate.getSeconds() < 10 ? '0' + newDate.getSeconds() : newDate.getSeconds());
    let format = {
      n: n,
      y: y,
      r: r,
      s: s,
      f: f,
      m: m,
    }
    return format
  }
}

获取当前星期几

function getWeekDate() {
  var now = new Date();
  var day = now.getDay();
  var weeks = new Array(
    "星期日",
    "星期一",
    "星期二",
    "星期三",
    "星期四",
    "星期五",
    "星期六"
  );
  var week = weeks[day];
  return week;
}

根据当前年的第几天 获取所在的日期

/**
 * @param {Number} year 哪年
 * @param {Number} day  哪天
 */
function dayToMD(year, day) {
  if (year && day && day < 367) {
    var isrunnian = (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
    var rules = [31, isrunnian ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    for (var i = 0; i < rules.length; i++) {
      if (rules[i] >= day) {
        return (i + 1 < 10 ? ("0" + (i + 1)) : (i + 1)) + '-' + (day < 10 ? ("0" + day) : day);
      }
      day -= rules[i];
    }
  }
}

获取所在周

记录一下 ,计算规则比较怪。产品这么要求,╮(╯▽╰)╭

/**
 * 获取当前天所在的周
 * 规则:按照日历上一行为一周。以当前年第一个周一所在的日期为当前年的起点
 * 如果当前日期>=起点,计算公式:Math.ceil((当前天数-(起点-1))/7)
 * 如果当前日期<起点 ,计算公式:Math.ceil((上一年的天数-(上一年起点-1)+当前日期天数)/7)
 * 返回结果 2020-1  2020年第几周
 * 头秃
 */

function weekFilter() {
  function yearDays(leapY) {
    var strleapYis =
      (leapY % 4 == 0 && leapY % 100 != 0) || leapY % 400 == 0;
    if (strleapYis) {
      strleapYis = 366;
    } else {
      strleapYis = 365;
    }
    return strleapYis;
  }
  function getWeekDay(year) {
    var d = new Date();
    d.setFullYear(year, 0);
    for (var i = 1; i <= 31; i++) {
      d.setDate(i);
      if (d.getDay() == 1) break;
    }
    d.setFullYear(year, 0, i);
    // return year + "-" + "01-" + (i >= 10 ? i :( "0" + i));
    return i;
  }
  let nowDay = Math.ceil(
    (new Date() - new Date(new Date().getFullYear().toString())) /
      (24 * 60 * 60 * 1000)
  );
  let nowYear = new Date().getFullYear();
  let nowWeek;
  if (nowDay >= getWeekDay(nowYear)) {
    nowWeek = Math.ceil((nowDay - (getWeekDay(nowYear) - 1)) / 7);
    return `${nowYear}-${nowWeek}`
  } else {
    nowWeek = Math.ceil(
      (yearDays(nowYear - 1) - (getWeekDay(nowYear - 1) - 1) + nowDay) / 7
    );
    return `${nowYear - 1}-${nowWeek}`
  }
}
收藏
评论区

相关推荐

JavaScript 引擎、事件循环、任务队列
一、先引用别人的一幅图 (很好的概括了JS主线程和任务队列是如何执行的) 1.JS引擎和runtime的区别: 引擎:解释并编译代码,让它变成
😎手撕吊打面试官系列面试题
js基础 1. 用js打印一个乘法表 这一题面试官考察的是你关于js的打印相关基础api的熟悉程度,以及基本的数学常识,送分题 console.log( 111 212 224 313 326 339 414 428 4312 4416 515 5210 5315 5420 5525
项目实战之---AES 加密
ajax/index.js import axiosApi from '../js/fetch'; import { baseUrl, headerParams } from '../js/baseUrl'; // import引用AES源码js import CryptoJS from 'cryptojs/cryptojs'; console.lo
每天学点 JS 编码规范(2):Objects
(给前端大全加星标,提升前端技能) 英文:AirBnB,翻译:Kakaka Hou 为什么要在前端大全推送这个系列? 前段时间有读者通过我的个人微信,提议能不能推送一些编程规范的文章。我们以前关注过 Airbnb 在 GitHub 上开源的 JS 编程规范(现在有10万 star,可见受欢迎程度),但因为篇幅太长,一直没有推送过。现在化整为零,设立这
Android webview 与 js(Vue) 交互
js 与原生交互分为两种情况:js 调用原生方法,原生调用 js 方法。 本文将对这两种情况分别讲解,H5 端用 vue 实现。 一、前期准备(Vue项目准备) 本文的 H5 端用Vue 实现,所以在正式开始前先把 Vue 项目环境准备好。 项目写好后,执行 npm run serve 命令启动项目,启动成功后会在命令
面试之手撕 JS 继承
提到JS继承,你首先想到的什么? 面试 继承方式 优缺点...,js继承作为曾经的苦主,我看了忘,忘了看,看了又忘,OMG,都0212年了面试官还不放过我。 ok
44道JS难题,还不来考考?
国外某网站给出了44道JS难题,试着做了下,只做对了17道。这些题涉及面非常广,涵盖JS原型、函数细节、强制转换、闭包等知识,而且都是非常细节的东西,透过这些小细节可以折
44道JS难题,做对一半就是高手
国外某网站给出了44道JS难题,试着做了下,只做对了17道。这些题涉及面非常广,涵盖JS原型、函数细节、强制转换、闭包等知识,而且都是非常细节的东西,透过这些小细节可以折
几个常用js库,别再重复造轮子了
年底了,总结下今年用到的一些有意思的《js轮子》(只是大概列出些比较有意思的库,每个标题都是超链接,可点击自行查阅) 希望能对您有用! 如有意思的 轮子 可以在评论列出一起讨论下 color(https://links.jianshu.com/go?tohttps%3A%2F%2Fwww.npmjs.com%2Fpackage%2Fco
js去除字符串
js去除字符串js<DOCTYPE html<html<head <title</title</head<body</body<script type"text/javascript" function delHtmlTag(str){   return str.replace(/<^/g,""); } var s
js删除表格中的某一行
点击表格中的内容,删除某一行正文js代码如下 function removeTd(obj) { obj.parentNode.parentNode.remove();}
日常必备的JS工具函数大全
为元素添加on方法 Element.prototype.on Element.prototype.addEventListener; NodeList.prototype.on function (event, fn) 、 []['forEach'].call(this, function (el) el.on(ev
只听说过CSS in JS,怎么还有JS in CSS?
CSS in JS是一种解决css问题想法的集合,而不是一个指定的库。从CSS in JS的字面意思可以看出,它是将css样式写在JavaScript文件中,而不需要独立出.css、.less之类的文件。将css放在js中使我们更方便的使用js的变量、模块化、treeshaking。还解决了css中的一些问题,譬如:更方便解决基于状态的样式,更容易追溯依赖关
React - Fiber原理
浏览器渲染 屏幕刷新率(FPS) 浏览器的正常绘制频率是60次/秒,小于这个值时,用户会感觉到卡顿 绘制一次的称为一帧,平均每帧16.6ms 帧 每个帧的开头包括样式计算、布局和绘制 js的执行是单线程,js引擎和页面渲染引擎都占用主线程,GUI渲染和Javascript执行两者是互斥的 如果某个js任务执行时间过长,浏览器会推迟渲染,每
前端 - 常见的异常捕获方法
前端异常捕获在ES3之前js代码执行的过程中,一旦出现错误,整个js代码都会停止执行,这样就显的代码非常的不健壮。从ES3开始,js也提供了类似的异常处理机制,从而让js代码变的更健壮,程序执行的过程中出现了异常,也可以让程序具有了一部分的异常恢复能力。js异常的特点是,出现不会导致JS引擎崩溃,最多只会终止当前执行的任务。回归正题,我们该如何在程序异常发生

热门文章

最新文章