一般来说,我们从后端获取的日期类型是 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;
}
本文介绍了如何使用Vue2和Ant-Design-Vue框架中的自定义函数dateFormat,实现从20200123格式的日期字符串转换为2020-01-23或类似格式,适用于后台系统中常见的日期格式调整。

被折叠的 条评论
为什么被折叠?



