您的当前位置:首页正文

JavaScript字符串对象与Date

来源:华佗小知识

指用来存放字符的数组,字符数组的定义:用来存放字符量的数组称为字符数组。

当我们在使用字符串时,可以直接用基本类型的字符串调用字符串对象的封装方法,无需手动转换。

javascript07.jpg

字符串的长度

基本类型字符串调用对象类型字符串封装的方法无需手动转换。

    var str1 = "who is the nice man!";
    var str2 = new String("who is the nice man!");
    console.log(str1.length);//20//

基本类型字符串是字符串类型,但是字符串数组是字符串对象类型,字符串对象封装了属性和方法,而我们要学会操作这些方法。所以我们主要学习方法。

字符串的常用方法

1.charAt(index)

功能:获取对应下标处的字符
参数:下标
返回值:获取到的字符,没有对应下标返回空字符串

        var str1 = "who饭 is the good man";
        var ret1 = str1.charAt(3);
        var ret2 = str1.charAt(5);
        var ret3 = str1.charAt(29);
        console.log(ret1);//饭
        console.log(ret2);//i
        console.log(ret3);//空字符串
        console.log(typeof ret3); //string
        console.log("*"+ret3+"*");//**
2.charCodeAt(index)

功能:获取对应下标处的字符编码
参数:下标
返回值:获取到的字符编码(0-65535),没有对应的下标返回NaN

        var str2 = "sunck饭 is a good man";
        var ret4 = str2.charCodeAt(3);
        var ret5 = str2.charCodeAt(5);
        var ret6 = str2.charCodeAt(29);
        console.log(ret4);//99  是字母c的ASCII码值
        console.log(ret5);//20975  Unicode(万国码)
        console.log(ret6);//NaN
        // 英文字符
        // ASCII码值
        // 48-->字符0
        // 65-->字符A
        // 97-->字符a
3.String.formCharCode(ASCII码)

功能:将ASCII值转化成对应的数值

        var ret7 = String.fromCharCode(97);
        //参数:ASCII值
        //返回值:对应的字符
        console.log(ret7);//
4.字符串的大小写转换

注意:字符串创建之后就不能改变了
4.1全部转换成小写
全部转换成小写,以返回值的形式得到结果。原字符串不会改变。

        var str3 = "SUNCK is a Good mAn"
        var ret8 = str3.toLowerCase();
        console.log(ret8);//sunck is a good man
        console.log(str3);//SUNCK is a Good mAn

4.2全部转换成大写
全部转换成大写,以返回值的形式得到结果。原字符串不会改变

        var ret9 = str3.toUpperCase();
        console.log(ret9);//SUNCK IS A GOOD MAN
5.判断两个字符串是否相等

== 值相等
=== 绝对相等

        var str4 = 1;
        var str5 = "1";
        console.log(str4==str5);//true   值相等
        console.log(str4===str5);//false 绝对相等(值和类型)
6.字符串比较大小

规则
两个字符串从下标为0的字符开始比较,如果谁的ASCII码值大,那么谁大,如果相等继续比较后面的字符,当两个字符不相等时停止比较,此时谁的ASCII值大谁就大。

        var str6 = "sunck is a good man";
        var str7 = "sunck is a nice man";
        // 前面都相等,n的ASCC比g大,所以str7大
        //如果返回值为1,则前面的大于后面的
        //如果返回值为-1,则后面的大于前面的
        //如果返回值为0,说明相等
        var ret10 = str6.localeCompare(str7);
        if (ret10<0){
            console.log(str6<str7); 
        }else if (ret10<0){
            console.log(str6>str7);
        }else{
            console.log(str6=str7);//true
        }
7.查找字符串

7.1 indexOf()
默认从左至右查找第一次出现的子字符串;
返回值:子串第一次出现的下标;如果没有找到子串,返回-1;
7.2lastIndexOf( );
从右至左查找第一次出现的子字符串;
返回值:子串第一次出现的下标;如果 没有找到子串,返回-1;

8.替换子串

replace( oldStr,newStr)
目前来说只能更改第一次出现的oldStr;

var str11 = "sunck is a good  man! sunck is a nice man";
var ret13 = str11.replace("good","handsome");
console.log(str11);//sunck is a good  man! sunck is a nice man
console.log(ret13);//sunck is a handsome  man! sunck is a nice man

9.提取子串

9.1 substring( );
从某个下标开始提取,一直提取到原字符串的末尾
9.2 substring( 参数1 , 参数2 );
从参数1下标开始提取,一直提取到原字符串参数2下标之前
9.3 substr( )
从某个下标开始提取,一直提取到原字符串的末尾
9.4substr(参数1,参数2)
从某个下标开始提取,一直提取到原字符串参数2个长度(包括空格)

        var str12 =  "sunck is a good  man! sunck is a nice man";
        var ret14 = str12.substring(3);
        console.log(ret14);//ck is a good  man! sunck is a nice man
        var ret15 = str12.substring(3,18);
        console.log(ret15);//ck is a good  m
        var ret16 = str12.substr(3);
        console.log(ret16);//ck is a good  man! sunck is a nice man
        var ret17 = str12.substr(3,18);//ck is a good  man!
        console.log(ret17);
10.字符串分隔

用参数切割字符串,结果保存在数组中返回

        var str13 =  " sunck    is a good  man! sunck is a nice man";
        var ret18 = str13.split(" ");
        console.log(ret18);
        //["", "sunck", "", "", "", "is", "a", "good", "", "man!", "sunck", "is", "a", "nice", "man"]

Math对象

封装了一些数学相关的运算
四舍五入:Math.round(参数1);

    var num = Math.round(4.5);
    console.log(num);//5

向上取整:Math.ceil(参数1);

    var num1 = Math.ceil(3.1);
    console.log(num1);//4

向下取整:Math.floor(参数1)
console.log(Math.floor(3.9));//3
取最大值:Math.max(参数1,参数2,参数3......参数n)
console.log(Math.max(3,4,6,76,8,89,32));//89
取最小值:Math.min(参数1,参数2,参数3......参数n)
console.log(Math.min(3,4,6,76,8,89,32));//3
绝对值abs(参数1)
console.log(Math.abs(-10));//10
x的y次方:Math.pow( x , y )
console.log(Math.pow(2,3));//8
开平方:Math.sqrt(参数1)
console.log(Math.sqrt(25));//5
随机输出x-y之间的一个整数:随机输出x-y之间的一个整数:Math.random()*(y-x+1)+x;

console.log(parseInt(Math.random() * (10 - 5 + 1) + 5));

不需要多余的解释,只有简单的干货。今天还早,继续。

javascript08.jpg

格林尼治标准时间(旧译格林尼治平均时间或格林威治标准时间;英语:Greenwich Mean Time,GMT)是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。自1924年2月5日开始,格林尼治天文台每隔一小时会向全世界发放调时信息。

世界协调时间(UTC):世界时间1970年1月1日0时

JS中的Date类型是由早期Java.util.Date类型基础上构建的,所以保存的是距离1970年1月1日0时的毫秒数来存储时间的。
创建时间函数
使用构造函数创建时间函数
1.var date1 = Date()
得到的是当前时间,并且是字符串类型
var date2 = new Date();
如果不使用参数,得到的当前时间,但是是对象类型
使用不同形式的参数,得到的是不一样的结果

    var date3 = new Date("2008/08/08 12:34:56");//Fri Aug 08 2008 12:34:56 GMT+0800 (中国标准时间)
    console.log(date3); 
    //省略时分秒默认为0(默认是标准时间)
    var date4 = new Date("2008/08/08");//Fri Aug 08 2008 00:00:00 GMT+0800 (中国标准时间)
    console.log(date4); 

    var date5 = new Date("2008/8/8");//Fri Aug 08 2008 00:00:00 GMT+0800 (中国标准时间)
    console.log(date5); 

    var date6 = new Date("2008-09-08");//Fri Aug 08 2008 08:00:00 GMT+0800 (中国标准时间)
    console.log(date6); 

    var date7 = new Date("2008-8-8");//Fri Aug 08 2008 00:00:00 GMT+0800 (中国标准时间)
    console.log(date7); 

参数是年,月,日,时,分,秒,毫秒
注意:年月必须写
月是从0开始,11结束,如果月份超过11,则年份自动增加;
日是从1开始,当月末尾结束,如果日期超过当月应该有的天数,月份自动增加;
时,分,秒,毫秒都如此

    var date9 = new Date (2015,0,1);
//Thu Jan 01 2015 00:00:00 GMT+0800 (中国标准时间)
    console.log(date9);

参数是一个数字
得到的是距离1970年1月1日0点参数毫秒之后的时间。
注意:对应北京时间增加8小时

    var date10 = new Date (2300);
    console.log(date10);//Thu Jan 01 1970 08:00:02 GMT+0800 (中国标准时间)

Date对象的方法

得到当前时间
var date = new Date();
得到年
console.log(date.getFullYear());
得到月
console.log(date.getMonth());
得到日
console.log(date.getDate());
得到星期
console.log(date.getDay());
得到时
console.log(date.getHours());
得到分
console.log(date.getMinutes());
得到秒
console.log(date.getSeconds());
得到毫秒
console.log(date.getMilliseconds());
当前对象表示的时间距离1970年1月1日0时的毫秒数
console.log(date.getTime());

设置时间

设置年

        date.setFullYear(1992);
        console.log(date);

设置月
月是从0开始,如果月大于等于12,年份增加

        date.setMonth(4);
        console.log(date);

注意:星期一般不设置
设置时
如果时大于23,日增加

        date.setHours(08);
        console.log(date);

设置分钟
如果分钟大于59,时增加

        date.setMinutes(54);
        console.log(date);  

设置秒
如果分钟大于59,分钟增加

        date.setMinutes(54);
        console.log(date);

设置毫秒
如果分钟大于999,分钟增加

        date.setMilliseconds(666);
        console.log(date);

设置距离1970年1月1日0时毫秒数

        date.setTime(1000);
        console.log(date);

转字符串

包含年月日时分秒
console.log(date.toLocaleString());//1992/5/3 上午8:54:51
包含年月日
console.log(date.toLocaleDateString());//1992/5/3
包含时分秒
console.log(date.toLocaleTimeString());//上午8:54:51
字符串

        var date1 = Date();
        //得到字符串表示的时间距离1970年1月1日的毫秒数
        console.log(Date.parse(date1));//1479290378000

Date对象间的运算

两个时间对象相减,得到的是两个对象间相差的毫秒数

    var date1 = new Date("2016-10-10 12:12:12");
    var date2 = new Date("2016-10-10 12:12:11");
    console.log(date1-date2);//1000
    console.log(date2-date1);//-1000

将两个时间字符串拼接

console.log(date1+date2);
//Mon Oct 10 2016 12:12:12 GMT+0800 (中国标准时间)Mon Oct 10 2016 12:12:11 GMT+0800 (中国标准时间)

今日结束、好好消化。。