/**
* y 年(201X)
* M 年中的月份(1-12)
* d 月份中的天数(1-31)
* H 一天中的小时数(0-23)
* h am/pm 中的小时数(1-12)
* m 小时中的分钟数(0-59)
* s 分钟中的秒数(0-59)
* S 毫秒数(0-999)
*/
/**
* 格式化输出日期
* eq: dateFormat(new Date(),"yyyy-MM-dd HH:mm:ss")
*/
export const dateFormat = (date,format) => {
let reg = /[yMdHhmsS]/;
let formatArr = format.match(/(.)\1*/g);
let formatObj = {
y:""+date.getFullYear(),
M:"0"+(date.getMonth()+1),
d:"0"+date.getDate(),
H:"0"+date.getHours(),
h:"0"+(date.getHours()>12?date.getHours()-12:(date.getHours()==0?12:date.getHours())),
m:"0"+date.getMinutes(),
s:"0"+date.getSeconds(),
S:"00"+date.getMilliseconds()
};
let str = "";
for(let i= 0,len = formatArr.length;i<len;i++){
if(formatArr[i]){
let char0 = formatArr[i].charAt(0);
if(reg.test(char0)){
let charLen = formatArr[i].length;
str += formatObj[char0].slice(charLen*-1);
}else{
str += formatArr[i];
}
}
}
return str;
},
/**
* 字符串转化为Date对象
* eq: parseDate("yyyy-MM-dd HH:mm:ss","2017-10-24 20:33:11")
*/
export const parseDate = (dateStr,format) => {
if(dateStr.length!==format.length){
console.warn("parseDate: the length of the dateString and format is not equal");
}
let reg = /[yMdHhmsS]/;
let formatArr = format.match(/(.)\1*/g);
let date = new Date();
let formatObj = {
y:date.setFullYear,
M:date.setMonth,
d:date.setDate,
H:date.setHours,
h:date.setHours,
m:date.setMinutes,
s:date.setSeconds,
S:date.setMilliseconds
};
for(let i = 0,formatLenCount = 0,len = formatArr.length;i<len;i++){
let formatUnit = formatArr[i];
if(formatUnit){
let char0 = formatUnit.charAt(0);
if(reg.test(char0)){
let dateUnit = dateStr.substring(formatLenCount,formatLenCount+formatUnit.length);
char0==="M"?formatObj[char0].call(date,dateUnit-1):formatObj[char0].call(date,dateUnit);
}
}
formatLenCount += formatUnit.length;
}
return date;
},

  

/**
* y    年(201X)
* M    年中的月份(1-12)
* d    月份中的天数(1-31)
* H    一天中的小时数(0-23)
* h    am/pm 中的小时数(1-12)
* m    小时中的分钟数(0-59)
* s    分钟中的秒数(0-59)
* S    毫秒数(0-999)
*/
/**
* 格式化输出日期
* eq: dateFormat(new Date(),"yyyy-MM-dd HH:mm:ss")
*/
export const dateFormat = (date,format) => {
    let reg = /[yMdHhmsS]/;
    let formatArr = format.match(/(.)\1*/g);
    let formatObj = {
        y:""+date.getFullYear(),
        M:"0"+(date.getMonth()+1),
        d:"0"+date.getDate(),
        H:"0"+date.getHours(),
        h:"0"+(date.getHours()>12?date.getHours()-12:(date.getHours()==0?12:date.getHours())),
        m:"0"+date.getMinutes(),
        s:"0"+date.getSeconds(),
        S:"00"+date.getMilliseconds()
    };
    let str = "";
    for(let i= 0,len = formatArr.length;i<len;i++){
        if(formatArr[i]){
            let char0 = formatArr[i].charAt(0);
            if(reg.test(char0)){
                let charLen = formatArr[i].length;
                str += formatObj[char0].slice(charLen*-1);
            }else{
                str += formatArr[i];
            }
        }
    }
    return str;
},
/**
* 字符串转化为Date对象
* eq: parseDate("yyyy-MM-dd HH:mm:ss","2017-10-24 20:33:11")
*/
export const parseDate = (dateStr,format) => {
    if(dateStr.length!==format.length){
        console.warn("parseDate: the length of the dateString and format is not equal");
    }
    let reg = /[yMdHhmsS]/;
    let formatArr = format.match(/(.)\1*/g);
    let date = new Date();
    let formatObj = {
        y:date.setFullYear,
        M:date.setMonth,
        d:date.setDate,
        H:date.setHours,
        h:date.setHours,
        m:date.setMinutes,
        s:date.setSeconds,
        S:date.setMilliseconds
    };
    for(let i = 0,formatLenCount = 0,len = formatArr.length;i<len;i++){
        let formatUnit = formatArr[i];
        if(formatUnit){
            let char0 = formatUnit.charAt(0);
            if(reg.test(char0)){
                let dateUnit = dateStr.substring(formatLenCount,formatLenCount+formatUnit.length);// 可以得到 2017 | 10
                char0==="M"?formatObj[char0].call(date,dateUnit-1):formatObj[char0].call(date,dateUnit);
            }
        }
        formatLenCount += formatUnit.length;
    }
    return date;
},

分享一个工具方法:日期格式化 & 日期转化,用法与java类SimpleDateFormat类似的更多相关文章

  1. 分享一个很好用的 日期选择控件datepicker 使用方法分享

    很多同学在做网站的时候,有时候需要用户选择日期,年月日这些的,以前我也在用一个,但是那个的界面都不太好看,于是找啊找,找啊找,找到一个好东西,就是这个,datepicker,是jquery.ui里面的 ...

  2. js扩展Date对象的方法,格式化日期格式(prototype)

    扩展:Date.prototype.format = function(format){     var o =  {     "M+" : this.getMonth()+1, ...

  3. 分享一个js方法

    这是一个关于参数合并的方法,这个场景也经常遇到,比如我们现在要对微信小程序的wx.request进行再一次封装,会涉及到一些默认的参数和每次使用自己传递的参数合并问题,分享代码. var extend ...

  4. 分享一个赚钱方法:用趣分类app在家轻松赚钱

    什么是趣分类 近期,垃圾分类是社会各界和广大市民关心的一个热门话题,随着垃圾分类工作的推进,各地都掀起学习垃圾分类的热潮.为了我们的美好生活,打响"垃圾分类"这场硬仗刻不容缓.据了 ...

  5. 分享一个的c++写的,模仿awk的框架类CAwkDoc

    这是我好多年前,模仿awk写的. awk大家都比较熟悉,使用awk处理文件,读取文件,分割字段这些工作awk自己帮你实现了. 程序员只要编写业务逻辑代码,并且awk还提供了很多常用的字符串操作函数,可 ...

  6. Java 格式化日期、时间

    有三种方法可以格式化日期.时间. 1.使用DateFormat类 获取DateFormat实例: DateFormat.getDateInstance()    只能格式化日期      2019年5 ...

  7. Python 日期和时间_python 当前日期时间_python日期格式化

    Python 日期和时间_python 当前日期时间_python日期格式化 Python程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 cal ...

  8. JavScript 日期格式化

    JavScript 日期格式化 //日期格式化 function formatDate(date,fmt) { if(date == null || typeof (date) == undefine ...

  9. JQ 日期格式化

    将字符转换为日期格式: function getDate(strDate) { var date = eval('new Date(' + strDate.replace(/\d+(?=-[^-]+$ ...

随机推荐

  1. 关于dp那些事

    拿到一道题,先写出状态转移方程,再优化时间复杂度 状态优化: 对于状态可累加 \(e.g.dp[i+j]=dp[i]+dp[j]+i+j\) 的,用倍增优化 决策优化: \(e.g.dp[i][j]= ...

  2. springMVC上传和下载附件

    上传: 导入需要的jar包:Spring MVC类库 + 文件上传下载需要的JAR包,图中A处为文件上传下载需要的JAR包,其余为Spring MVC类库. 构建领域模层:model层和control ...

  3. vue 2.0源码学习笔记—new Vue ( Vue 初始化过程 )

    new Vue(Vue 初始化) 一个vue实例化到底经历了什么?已下是博主自己的总结,不正确的地方请指出,谢谢~ 一.简述 从使用角度来看,挂载的顺序如下 1. $slots 2. $scopedS ...

  4. 前端HTML元素的类型名称

    <div id="content" class="para" style="width:800px;"> <p>He ...

  5. 【UE4】 补丁Patch 与 DLC

    概述 UE4 中主要使用 Project Launcher 来进行补丁和DLC的制作 补丁与 DLC 都需要基于某个版本而制作 补丁 与 DLC 最后以 Pak 形式表现, 补丁的 pak 可以重命名 ...

  6. kivy画板

    from kivy.app import App from kivy.graphics import Line, Color # 引入绘图线条,颜色 from kivy.uix.widget impo ...

  7. 是兄弟就来摸鱼 Scrum Meeting 博客汇总

    是兄弟就来摸鱼 Scrum Meeting 博客汇总 一.Alpha阶段 第一次Scrum meeting 第二次Scrum meeting 第三次Scrum meeting 第四次Scrum mee ...

  8. [对对子队]会议记录4.20(Scrum Meeting11)

    今天已完成的工作 何瑞 ​ 工作内容:搭建第三关,添加了运行指令标识 ​ 相关issue:搭建关卡2.3 ​ 相关签入:4.20签入1 4.20签入2 吴昭邦 ​ 工作内容:搭建第三关 ​ 相关iss ...

  9. SpringCloud 2020.0.4 系列之Hystrix看板

    1. 概述 老话说的好:沉默是金,有时适当的沉默,比滔滔不绝更加有效. 言归正传,前面我们聊了有关 Hystrix 降级熔断的话题,今天我们来聊聊如何使用 turbine 和 hystrix dash ...

  10. 精准测试系列分享之一:JaCoCo 企业级应用的优缺点分析

    一.JaCoCo简介 JaCoCo是Eclipse平台下的开源产品,以小型,轻量化著称,常见集成在Eclipse Workbench中,除此之外的启动方式包括对接Ant和Maven,或是命令行的方式进 ...