/**
* 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. Centos7最小安装后快速初始化脚本

    功能说明 服务器通常使用最小化安装操作系统,使用该脚本可快速初始化一些基本配置,包括以下: 1.ssh修改默认端口 2.ssh禁止root登陆 3.selinux及firewalld禁用 4.hist ...

  2. 专业网络损伤仪HoloWAN meme只需5999元!

    在人们对互联网的依赖度越来越高的今天,人类社会逐步买入元宇宙时代,为了大大提高整个互联网的用户体验,HoloWAN团队推出每一个互联网应用开发团队都能用得起的专业网络损伤仪HoloWAN meme!售 ...

  3. final和static的区别

    static作用于成员变量用来表示只保存一份副本 final的作用是用来保证变量不可变.下面代码验证一下 public class FinalTest { public static void mai ...

  4. AIbee 笔试

    CSS选择器 div+p 选择紧接在div元素之后的所有< p >元素 C++删除数组最后一个元素. 例如[1 2 3 4] 最后变为 [1 2 3] 用splice的删除,增加和替换 a ...

  5. netty系列之:使用netty实现支持http2的服务器

    目录 简介 基本流程 CleartextHttp2ServerUpgradeHandler Http2ConnectionHandler 总结 简介 上一篇文章中,我们提到了如何在netty中配置TL ...

  6. 【UE4 C++ 基础知识】<15> 智能指针 TSharedPtr、UniquePtr、TWeakPtr、TSharedRef

    基本概念 UE4 对 UObject 对象提供垃圾回收 UE4 对原生对象不提供垃圾回收,需要手动进行清理 方式 malloc / free new / delete new与malloc的区别在于, ...

  7. springcloud (一)系统架构演变之路

    演变过程 从传统架构(单点应用)→分布式架构(以项目进行拆分)→SOA架构(面向服务架构)→微服务架构 1 传统架构 其实就是ssh架构或者ssm架构,属于单点应用,把整个开发业务模块都会在一个项目中 ...

  8. 防止SQL注入总结

    1.预编译(占位符)可以很大程度上防止SQL注入 预编译的原理是数据库厂商提供的JAR包中,对参数进行了转义 2.mybatis中,能用# 的地方,不用$,因为#是预编译占位符形式,可以防止SQL注入 ...

  9. hystrix的dashboard和turbine监控

    当我们的应用程序使用了hystrix后,每个具体的hystrixCommand命令执行后都会产生一堆的监控数据,比如:成功数,失败数,超时数以及与之关联的线程池信息等.既然有了这些监控数据数据,那么我 ...

  10. 21.6.17 test

    \(NOI\) 模拟赛. \(T1\) 正解树形DP,由于不是很熟悉概率和期望所以打了个20pts暴力,说不定见多了概率能打出60pts半正解?最后的虚树更不会. \(T2\) 又是概率,还有坐标数量 ...