1、英文时间转化成字符串案例
function fillZero(number) {
return number < 10 ? '0' + number : number;
}
var str = 'Thu Feb 09 2023 00:00:00 GMT+0800 (中国标准时间)';
// 将str表示的时间转换为日期时间对象
var d = new Date(str);
var y = d.getFullYear();
var m = fillZero(d.getMonth() + 1);
var date = fillZero(d.getDate());
var hh = fillZero(d.getHours());
var mm = fillZero(d.getMinutes());
var ss = fillZero(d.getSeconds());
console.log([y, m, date].join('-') + ' ' + [hh, mm, ss].join(':'))
2、计算日期差案例
var start = '2023-1-29';
var end = '2023-4-5';
// 计算出两个时间相差的秒数
var diffSeconds = Math.floor((Date.parse(end) - Date.parse(start)) / 1000);
// 相差的天数
var day = parseInt(diffSeconds / (3600 * 24));
// 小时
var hours = parseInt((diffSeconds - 3600 * 24 * day) / 3600);
// 分钟
var mm = parseInt((diffSeconds - 3600 * 24 * day - hours * 3600) / 60);
// 秒
var ss = (diffSeconds - 3600 * 24 * day - hours * 3600) % 60;
console.log(day + '天' + hours + '小时' + mm + '分钟' + ss + '秒')
// 模板字符串 不是单双引号 叫做反引号 模板字符串 支持任意原始格式 并且可以解析变量
var str = `a
${day}c
b
`
console.log(str)
console.log(`${day}天${hours}小时${mm}分钟${ss}秒`)
3、显示中文时间案例
实现思路
// 1、转换日期对象
// 2、提取时间
// 3、将数字转换为中文
// 怎么将数字0-9与中文零-九对应起来 需要保存数字与中文的对应关系 可以使用数组保存零到九整几个中文 正好对应数组下标(以后需要设置对应关系 首选对象)
// 观察年、月、日、时、分、秒 其中年最特殊 根据数字直接显示对应的中文即可 后面的几个数字规律相同 并且范围最大60
// 分析规律
0-9 直接显示对应的中文
10 固定的十
11-19 前面固定十 后面是数字对应的中文
20-60之间 前面的数字中文加上固定的十 如果第二个数字非0的 拼接上对应的中文 否则 什么都没有
//设置中文的对应关系
var chinese = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']
console.log(format('2023-11-9 14:14:14'));
function format(time) {
// 转换日期对象
var d = new Date(time);
var year = formatYear(d.getFullYear());
var month = formatOther(d.getMonth() + 1);
var date = formatOther(d.getDate());
var hh = formatOther(d.getHours());
var mm = formatOther(d.getMinutes());
var ss = formatOther(d.getSeconds());
return `${year}年${month}月${date}号${hh}点${mm}分${ss}秒`
}
// 格式化 除了年外的其他的数字
function formatOther(number) {
if (number < 10) {
return chinese[number];
}
if (number == 10) {
return '十';
}
if (number < 20) {
return '十' + chinese[number % 10];
}
// 25
number = number.toString();
return chinese[number[0]] + '十' + (number[1] == 0) ? '' : chinese[number[1]]
}
// 格式化年份
function formatYear(year) {
year = String(year);
var result = '';
for (var i = 0; i < year.length; i++) {
var index = year[i]; //取出当前位置字符内容 字符内容 与中文的下标对应
result += chinese[index];
}
return result;
}