方法一、
在使用js-xlsx插件来读取excel时,会将2018/10/16这种数据自动装换成48264.12584511.
所以需要自己手动再转换回来
// excel读取2018/01/01这种时间格式是会将它装换成数字类似于46254.1545151415 numb是传过来的整数数字,format是之间间隔的符号
1.方法①:
formatDate(numb, format) {
const time = new Date((numb - 1) * 24 * 3600000 + 1)
time.setYear(time.getFullYear() - 70)
const year = time.getFullYear() + ''
const month = time.getMonth() + 1 + ''
const date = time.getDate() - 1 + ''
if (format && format.length === 1) {
return year + format + month + format + date
}
return year + (month < 10 ? '0' + month : month) + (date < 10 ? '0' + date : date)
},
console.log(formatDate(42618, '/')) // 2016-9-5
2. 方法②:
//excel日期格式转换 numb为数字,format为拼接符“-”
function formatDate(numb, format) {
// 1. 第一种写法
if (numb != undefined) {
let time = new Date((numb - 1) * 24 * 3600000 + 1)
time.setYear(time.getFullYear() - 70)
let year = time.getFullYear() + ''
let month = time.getMonth() + 1 + ''
let date = time.getDate() + ''
if (format && format.length === 1) {
return year + format + month + format + date
}
return year + (month < 10 ? '0' + month : month) + (date < 10 ? '0' + date : date)
} else {
return undefined;
}
// 2. 第二种写法
let time = new Date( (numb - 25567) * 24 * 3600000 -
5 * 60 * 1000 -
43 * 1000 -
24 * 3600000 - 8 * 3600000 );
let year = time.getFullYear() + ''
let month = time.getMonth() + 1 + ''
let date = time.getDate() + ''
if (format && format.length === 1) {
return year + format + month + format + date
}
return year + (month < 10 ? '0' + month : month) + (date < 10 ? '0' + date : date)
}
方法二、时分秒转换:
function formatTime(numb, format) {
var hourTmp = numb * 24;
var hour = Math.floor(hourTmp);
var minuteTmp = hourTmp - hour;
var minute = Math.round(minuteTmp * 60);
return (hour < 10 ? '0' + hour : hour) + format + (minute < 10 ? '0' + minute : minute);
}
方法三、Js如何将一串数字转换为时间格式yyyy-MM-dd hh:mm:ss
var time='20190306214635'
time.replace(/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/g, '$1-$2-$3 $4:$5:$6');
输出
2019-03-06 21:46:35
方法四、
今天写了一个ajax请求,当获取对象中的某个日期属性时,发现打印出来是一串数字,例如:1394786876000。可能有人会有疑问了,明明是日期格式,为什么不返回日期,而返回一串数字呢?其实这串数字是个时间戳,也就是从格林威治时间1970年01月01日00时00分00秒起至返回的那个日期的总秒数。如何将时间戳转化为我们需要的格式呢。
在此只介绍一种简单的方法,也是我从网上找来的:
1、在js中先加载一下代码,不需要做任何修改
Date.prototype.format =function(format)
{
var o = {
"M+" : this.getMonth()+1, //month
"d+" : this.getDate(), //day
"h+" : this.getHours(), //hour
"m+" : this.getMinutes(), //minute
"s+" : this.getSeconds(), //second
"q+" : Math.floor((this.getMonth()+3)/3), //quarter
"S" : this.getMilliseconds() //millisecond
}
if(/(y+)/.test(format)) format=format.replace(RegExp.$1,
(this.getFullYear()+"").substr(4- RegExp.$1.length));
for(var k in o)if(new RegExp("("+ k +")").test(format))
format = format.replace(RegExp.$1,
RegExp.$1.length==1? o[k] :
("00"+ o[k]).substr((""+ o[k]).length));
return format;
}
2、使用new Date(时间戳).format('yyyy-MM-dd')方法进行转化即可,返回的就是yyyy-MM-dd格式的值。
最后为了方便大家的沟通与交流请加QQ群: 625787746
请进QQ群交流:【IT博客技术分享群①】:正在跳转