开发中对日其的转换和展示方法

本文介绍了如何使用Vue2和Ant-Design-Vue框架中的自定义函数dateFormat,实现从20200123格式的日期字符串转换为2020-01-23或类似格式,适用于后台系统中常见的日期格式调整。

一般来说,我们从后端获取的日期类型是 20200123 这种格式,我们需要转换成 2020-01-23、或者2020年1月23日,利用下面这方法。

基于Vue2和Ant-Design-Vue封装的后台系统,其中包括很多常用组件和方法Smile Admin

const patternChars = ['y','Y','M','m','D','d','h','H','s','S'];

function isPatternChar(char) {
    for(var i = 0 ; i < patternChars.length ; i++){
        if(patternChars[i] === char){
            return true;
        }
    }
    return false;
}
/**
 * 字符串日期转换
 * @param dateString date字符串
 * @param oldPattern 旧格式
 * @param newPattern 新格式
 *
 * @description 例如: {{ 20170825 | dateFormat:'yyyyMMdd':'yyyy-MM-dd'}} => 2017-08-25
 *    目前还不支持{{20170825 0202 | | dateFormat:'yyyyMMdd hhmmss':'yyyy-MM-dd hh:mm:ss'}}
 *
 */
export default function dateFormat(dateString, oldPattern, newPattern) {
    if(dateString === null){
        return "";
    }
    //强转为String
    dateString += "";

    // 如果date字符串和旧的模式不匹配,直接返回
    if(dateString.length !== oldPattern.length && oldPattern.toLowerCase() !== "hhmmss"){
        return dateString;
    }
    // 如果旧的模式是hhmmss
    if(oldPattern.toLowerCase() === "hhmmss"){
        var leaderZero = 6 - dateString.length;
        for(var i = 0; i < leaderZero ; i++){
            dateString = "0" + dateString;
        }
    }
    // 创造字典
    var dict = {};
    for(var i = 0, l = oldPattern.length ; i < l ; i ++){
        if(!dict[oldPattern[i]]){
            dict[oldPattern[i]] = [dateString[i]];
        }else{
            dict[oldPattern[i]].push(dateString[i]);
        }
    }
    // 翻译
    var result = "";
    var index = {};
    for(i = 0, l = newPattern.length ; i < l ; i ++){
        if(!dict[newPattern[i]]){
            if(isPatternChar(newPattern[i])) {
                result += "0";
            }else{
                result += newPattern[i];
            }
        }else{
            if(!index[newPattern[i]]) {
                index[newPattern[i]] = 0;
            }
            result += dict[newPattern[i]][index[newPattern[i]]];
            index[newPattern[i]]++;
        }
    }
    return result;
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值