1.获取当前日期
//获取当前日期的字符串表达
function getCurrentDateString(){
var date = new Date();
const year = date.getFullYear() //年
const month = date.getMonth() + 1 //月
const day = date.getDate() //日
function formatNumber(n){
//数字转成数字字符串
n = n.toString()
return n[1]?n:'0'+n
}
return [year, month, day].map(formatNumber).join('-') //2018-04-20
}
2.获取当前时间
//获取当前时间的字符串表达
function getCurrentTimeString(){
var date = new Date();
const year = date.getFullYear() //年
const month = date.getMonth() + 1 //月
const day = date.getDate() //日
const hour = date.getHours() //时
const minute = date.getMinutes() //分
const second = date.getSeconds() //秒
function formatNumber(n){
//数字转成数字字符串
n = n.toString()
return n[1]?n:'0'+n
}
return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':') //2018/04/20 16:00:00
}
3.阿拉伯数字转汉语数字(2 => 二)
var chnNumChar = ["零","一","二","三","四","五","六","七","八","九"];
var chnUnitSection = ["","万","亿","万亿","亿亿"];
var chnUnitChar = ["","十","百","千"];
function SectionToChinese(section){
var strIns = '', chnStr = '';
var unitPos = 0;
var zero = true;
while(section > 0){
var v = section % 10;
if(v === 0){
if(!zero){
zero = true;
chnStr = chnNumChar[v] + chnStr;
}
}else{
zero = false;
strIns = chnNumChar[v];
strIns += chnUnitChar[unitPos];
chnStr = strIns + chnStr;
}
unitPos++;
section = Math.floor(section / 10);
}
return chnStr;
}
// 数字转汉语数字
function NumberToChinese(num){
var unitPos = 0;
var strIns = '', chnStr = '';
var needZero = false;
if(num === 0){
return chnNumChar[0];
}
while(num > 0){
var section = num % 10000;
if(needZero){
chnStr = chnNumChar[0] + chnStr;
}
strIns = SectionToChinese(section);
strIns += (section !== 0) ? chnUnitSection[unitPos] : chnUnitSection[0];
chnStr = strIns + chnStr;
needZero = (section < 1000) && (section > 0);
num = Math.floor(num / 10000);
unitPos++;
}
// 将一十一这种变成十一
if (chnStr.indexOf("一十") != -1) {
chnStr = "十"+chnStr.split("一十")[1];
}
return chnStr;
}
4.判断已知日期是星期几
//判断已知日期字符串是星期几, 假设 dateString:2018-04-20
function getWeekDay(dateString){
var currentDate = new Date(); //获取当前日期
var date = new Date(dateStr); //日期字符串转日期
if (date.getDay() === 0) {
var weekDay = "周日"
}else{
var weekDay = "周" +NumberToChinese(date.getDay());
}
return weekDay;
}
5.获取已知日期前/后n天的日期
后 n 天
// dateStr:2018-04-20 num:1 function getLaterDate(dateStr, num){ // 获取date1后n天的日期 var date1 = new Date(dateStr); var date2 = new Date(date1); date2.setDate(date1.getDate() + num); return [date1, date2] }
前 n 天
// dateStr:2018-04-20 num:1 function getBeforeDate(dateStr, num){ // 获取date1前n天的日期 var date1 = new Date(dateStr); var date2 = new Date(date1); date2.setDate(date1.getDate() - num); return [date1, date2] }
6.获取已知时间前/后n分钟的时间
后 n 分钟
// timeString:2018/04/20 10:00 num:40 function getLaterTime(timeString, num){ // 获取timeString后n分钟的时间 var time1 = new Date(timeString); var time2 = new Date(time1); time2.setMinutes(time1.getMinutes() + num); return [time1, time2] }
前 n 分钟
// timeString:2018/04/20 10:00 num:40 function getBeforeTime(timeString, num){ // 获取timeString前n分钟的时间 var time1 = new Date(timeString); var time2 = new Date(time1); time2.setMinutes(time1.getMinutes() - num); return [time1, time2] }
7.获取30天的日期
function get30Dates(dateStr, hasToday){
var bd = Utils.getLaterDate(dateStr, 29)[0];
var be = Utils.getLaterDate(dateStr, 29)[1];
var bd_time = bd.getTime(),
be_time = be.getTime(),
time_diff = be_time - bd_time;
var d_arr = [];
for(var i=0; i<= time_diff; i+=86400000){
var ds = new Date(bd_time+i);
if (ds.getDay() === 0) {
var weekDay = "周日"
}else{
var weekDay = "周"+NumberToChinese(ds.getDay());
}
d_arr.push(ds)
}
return d_arr
}
8.仿微博显示时间问题
//timeString:2018-04-20T10:25:38
function dealWithTime(timeString){
var timeArray = timeString.split('.')[0].split('T')
var year = timeArray[0].split('-')[0];
var month = timeArray[0].split('-')[1];
var day = timeArray[0].split('-')[2];
var hour = timeArray[1].split(':')[0];
var minute = timeArray[1].split(':')[1];
var second = timeArray[1].split(':')[2];
var create = new Date(year, month - 1, day, hour, minute, second);
var current = new Date();
var s1 = current.getTime() - create.getTime(); //相差的毫秒
var str = null;
if (s1 / (60 * 1000) < 1) {
str = "刚刚";
} else if (s1 / (60 * 1000) < 60) {
str = parseInt(s1 / (60 * 1000)) + "分钟前";
} else if (s1 / (60 * 1000) < 24 * 60) {
str = parseInt(s1 / (60 * 60 * 1000)) + "小时前";
} else if (s1 / (60 * 1000) < 24 * 60 * 2) {
str = "昨天 " + timeString.slice(11, 16);
} else {
str = timeString.slice(0, 10).replace('T', ' ');
}
return str;
}