js day07 时间对象 获取本地时间 秒杀倒计时 字符串方法

一, 时间对象和字符串方法

1, 时间对象

使用时间对象,在不写入参数的情况下,可以获取电脑当前这1秒钟的本地时间

时间对象是一个内置函数,可以直接拿过来使用,是在js底层已经定义好的

Number()  数值
String() 字符串
Boolean() 布尔
Object() 对象
Array() 数组
Function(){}  函数  
Date() 时间
Error() 错误
RegExp()正则

2, 获取本地时间

语法:

// var d = new Date(); 

获取年月日

// 获取年月日
var y = d.getFullYear();
// 当前月份要加 + 1  1月到12月 对应下标值是0-11  
var m = d.getMonth() + 1;
var r = d.getDate();

console.log(y + '年' + m + '月' + r + '日');

时分秒

// 时分秒
var h = d.getHours();  // 小时
var f = d.getMinutes(); // 分钟
var s = d.getSeconds();   // 秒
console.log(h + '时' + f + '分' + s + '秒');

星期

// 星期 
var week = ['星期天','星期一','星期二','星期三','星期四','星期五','星期六'];
var w = d.getDay();
console.log(week[w]);
console.log(y + '年' + m + '月' + r + '日' + week[w] + h + '时' + f + '分' + s + '秒');

电子时钟

auto(); // 解决1秒的空白
setInterval(auto, 1000);
function auto() {
    // 获取本地时间
    var d = new Date(); // 

    // 获取年月日
    var y = d.getFullYear();
    // 当前月份要加 + 1  1月到12月 对应下标值是0-11  
    var m = d.getMonth() + 1;
    var r = d.getDate();

    // 时分秒
    var h = d.getHours();  // 小时
    var f = d.getMinutes(); // 分钟
    var s = d.getSeconds();   // 秒

    // 星期 
    var week = ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
    var w = d.getDay();

    document.querySelector('body').innerHTML = y + '年' + m + '月' + r + '日' + week[w] + h + '时' + f + '分' + s + '秒'
}

获取特定时间

console.log(d.toLocaleString());
console.log(d.toLocaleTimeString());
console.log(d.toLocaleDateString());

时间戳

// 时间戳  就是从1970年1月1号 凌晨零点 到现在这个时间的毫秒数
console.log(d.getTime()); // 1600741855080 数值类型  

// 2020年11月11号 - 2020年9月22  

console.log(Date.now()); // 1600742004734

设置未来时间

//  字符串
// 月份正常输入
var d1 = new Date('2020,11,11 11:11:11');
// console.log(d1.getTime()); //1605064271000
console.log(d1);

//直接输入时间   月份 - 1  
var d2 = new Date(2020,10,11,11,11,11);
console.log(d2);

时间计算

// 时间计算
var nowTime = new Date(); 
var endTime = new Date('2020,11,11 11:11:11'); 

var leftTime = parseInt((endTime.getTime() - nowTime.getTime()) / 1000); // 秒
console.log(leftTime / (24 * 60 * 60)); // 50

3, 秒杀倒计时

auto(); // 解决1秒的空白

setInterval(auto, 1000)

function auto() {
    // 设置本地时间
    var nowTime = new Date();
    // 设置未来时间
    var endTime = new Date('2020,11,11 11:11:11');

    // 把时间转化为时间戳,做时间的运算
    var leftTime = parseInt((endTime.getTime() - nowTime.getTime()) / 1000);// 秒

    // 计算 天  时  分  秒 
    var t = parseInt(leftTime / (24 * 60 * 60));
    var h = parseInt((leftTime / (60 * 60)) % 24);
    var m = parseInt((leftTime / 60) % 60);
    var s = parseInt(leftTime % 60);

    document.body.innerHTML = '距离活动开始还有:' + two(t) + '天' + two(h) + '时' + two(m) + '分' + two(s) + '秒';
    // 如果活动结束
    if (leftTime <= 0) {
        document.body.innerHTML = '活动已经开始';
    }
}
// 补0
function two(n){
    return n >= 10 ? n : '0' + n; 
}

二, 字符串对象

字符串

使用单引号或者双引号引起来的都是字符串

1、使用字面量的方式

var str = '我爱吃大肘子';
var str = '10';
var str = "字符串"
var str = 中国; // 错误的

2、使用构造函数

// 使用构造函数创建字符串
var str = new String('abc');
console.log(typeof str);  // object
console.log(str[0]); // 下标
console.log(str.length); // 长度

// 可以直接使用构造函数

var str1 =String('123456');
console.log(typeof str1);  // string
console.log(str1[0]); // 下标
console.log(str1.length); // 长度

可以通过下标读取字符串

var str = 'abcdefg';

console.log(str[0]); // a
console.log(str.charAt(0)); // a 
console.log(str.charCodeAt(0)); // 97 

1, indexOf

语法:字符串.indexOf('查找的字符',index)

'查找的字符':在某一个字符串中需要查找的单个字符或者一串字符

index:是一个number类型,代表的是查找的起始位置,代表的下标值 取值范围 字符串的长度 - 1

如果查找到了,返回当前查找的字符在字符串中首次出现的位置(下标值)

如果没找到,返回 -1

console.log(str.indexOf('c')); //  2
// 返回值是第一个字符的下标
console.log(str.indexOf('cd')); // 2
// 所有的字符都是需要匹配的
console.log(str.indexOf('cD')); // -1
// 第二个参数是决定查找的位置
console.log(str.indexOf('c',3)); //  -1

2, 字符串去重

// 需求:去掉重复的,数字在前,字母在后

var str = '1233fddfd&3434fdsaff&454545&4545444rfdsfds&545gdsgs';
var num = ''; // 数字
var sum = ''; // 字母

// 先拿到每一个字符
for (var i = 0; i < str.length; i++) {
    var v = str[i]; // 每一个字符  v = '1' v = '2'
    // 数字 48 - 57
    if(v.charCodeAt(0)>=48 && v.charCodeAt(0)<=57 && num.indexOf(v) == -1){
        num+=v;
    }
    // 字母 97-122
    if(v.charCodeAt(0)>=97 && v.charCodeAt(0)<=122 && sum.indexOf(v) == -1){
        sum+=v;
    }
}

console.log(num + sum); //12345fdsarg

3, 查找多个字符

var str = '我就小王12是我颜色小王12不一样的小王12烟火';

// 找到所有的小王
console.log(str.indexOf('小王')); // 2
console.log(str.indexOf('小王', 4)); // 8
//循环查找
var n = str.indexOf('小王1'); // 2
while(n !==-1){
    console.log(n); // 2 
    n = str.indexOf('小王1', n + 3);
}
// 封装
fn(str, '小王12'); //函数调用
function fn(str, val) { // str 字符串  val 查找的字符
    var n = str.indexOf(val);
    while (n != -1) {
        console.log(n);
        n = str.indexOf(val, n + val.length);
    }
}

4, 查找某个字符在字符串中出现的次数

// 查找o出现的次数
var str = 'oabcdofrghoooooooooooodefklaoqwpo';
var n = str.indexOf('o');
var num = 0; // 计数

while (n != -1) {
    num++;
    n = str.indexOf('o', n + 1);
}
console.log(num);

5, lastIndexOf

语法:字符串.lastIndexOf('查找的字符',起始位置)

返回值和indexOf相同

indexOf是从前往后查找

lastIndexOf是从后往前查找

// 字符串.lastIndexOf('查找的字符', 起始位置)
var str = 'abcadeafag';

console.log(str.indexOf('a')); // 0
console.log(str.lastIndexOf('j')); // -1

console.log(str.lastIndexOf('a')); // 8

console.log(str.lastIndexOf('a',6)); // 6

6, 打印文件扩展名

// 1.2.3.4.txt
// console.log(fn('1.2.3.4.txt'));
console.log(fn('老韩.liumang'));

function fn(str) {

    var n = str.lastIndexOf('.'); // 7

    if (n != -1) {
        return str.slice(n + 1);
    } else {
        alert('无效的文件');
    }
}

7, 字符串的截取

语法:字符串.substring(起始位置,结束位置)

// 注意:包含开始  不包含结束

var str = 'abcdefg';
// 一个参数的时候,从当前位置一直到结束
console.log(str.substring(2)); //cdefg
// 当两个参数的时候,从开始位置到结束位置
console.log(str.substring(2,5)); // cde
// 当第一个参数大于第二个参数的时候,会自动交换位置
console.log(str.substring(5,2)); // cde
// 当第一个参数为负数的时候,会默认转换为 0 
console.log(str.substring(-2,5)); // abcde
// 当第二个参数为负数的时候,默认转换为 0 然后在自动交换位置
console.log(str.substring(5,-2)); //  abcde  

8, 语法:字符串.slice(起始位置,结束位置)

// 注意;包含开始 不包含结束

var str = 'abcdefg';
// 当一个参数的时候,从当前位置截取到末尾
console.log(str.slice(2)); // cdefg
// 当两个参数的时候,从起始位置截取到结束位置
console.log(str.slice(2,6)); // 
// 当第一个参数大于第二个参数的时候,不会自动交换位置
console.log(str.slice(6,2)); //  空
// 当第一个参数为负数的时候 起始位置的值  = 字符串的长度 + 负数
console.log(str.slice(-3,6)); // ef
// 当第二个参数为负数的时候 起始位置的值  = 字符串的长度 + 负数  
// 如果第二个参数小于第一个参数 不会自动交换为
console.log(str.slice(6,-3)); // 

9, 语法:字符串.substr(起始位置,截取的长度)

var str = 'abcdefg';
// 如果是一个参数,从当前位置截取到末尾
console.log(str.substr(2)); // cdefg
// 第二个参数是截取的长度
console.log(str.substr(2,5)); // cdefg 

案例 - 展开收缩

// 获取元素
var span = document.getElementsByTagName('span')[0];
var a = document.getElementsByTagName('a')[0];

var text = span.innerHTML; // 保存原数据
var tag = true; // 展开
// 添加事件

a.onclick = function () {
    if (tag == true) {
        span.innerHTML = span.innerHTML.substring(0, 18) + '...';
        a.innerHTML = '展开';
        tag = false;
    } else {
        span.innerHTML = text + '...';
        a.innerHTML = '收缩';
        tag = true;
    }
}

10, 字符串的切割

语法:字符串.split(切割的字符)

把字符串切割长数组,并返回这个数组

var str = '2020-9-22';

console.log(str.split('-'));
console.log(str.split(''));
console.log(str.split());


// 语法:数组.join(标识符)  把数组转换成字符串

var arr = ['刘备','张飞','关羽'];
console.log( typeof arr.join(','));

console.log(arr.join(''));

console.log(arr.join());

11, 替换内容

var str = '我是帅哥';
var arr = str.split('是'); //  ["我", "帅哥"]
var str1 = arr.join('不是');
console.log(str1);

12, 查找替换

// 获取元素
var pt = document.getElementsByTagName('input');
var div = document.getElementById('div1');

var text = div.innerHTML; // 保存原始数据

// 添加事件
pt[2].onclick = function(){

    // 获取输入框的内容
    var v1 = pt[0].value;
    var v2 = pt[1].value;
    // 分割字符串
    var arr = text.split(v1); // arr = [,'']

    // 当第一个框有内容 第二个框内内容
    if(v1 && !v2){
        // 查找
        div.innerHTML = arr.join('<span>' + v1 + '</span>');
    }else if(v1 && v2){
        // 替换
        div.innerHTML = arr.join('<span>' + v2 + '</span>');
    }
}

13, 去掉字符左右的空格

var str = '    字符         ';
console.log(str);
console.log(str.trim());

14, 转换大小写

'abc'.toUpperCase() // 大写
"ABC" 
"ABC".toLowerCase() // 小写
"abc"

15, 替换字符

语法:字符串.replace('被替换的字符','替换的字符')

var str = '138999999999';

console.log(str.replace('999999999','************'));
原文地址:https://www.cnblogs.com/bnzw/p/13714134.html