字符串&Math&date


字符串

字符串就是零个或多个排在一块儿的字符,放在单引号或双引号之中。前端

'abc'
"abc"
复制代码

单引号字符串的内部,可使用双引号。双引号字符串的内部,可使用单引号。web

'key="value"'
"It's a long journey"
复制代码

多行与转义

若是要在单引号字符串的内部,使用单引号(或者在双引号字符串的内部,使用双引号),就必须在内部的单引号(或者双引号)前面加上反斜杠,用来转义。数组

'Did she say \'Hello\'?'
// "Did she say 'Hello'?"

"Did she say \"Hello\"?"
// "Did she say "Hello"?"
复制代码

字符串默认只能写在一行内,分红多行将会报错。bash

'a b c'
// SyntaxError: Unexpected token ILLEGAL
复制代码

上面代码将一个字符串分红三行,JavaScript就会报错。dom

若是长字符串必须分红多行,能够在每一行的尾部使用反斜杠。函数

var longString = "Long \ long \ long \ string";

longString
// "Long long long string"
复制代码

上面代码表示,加了反斜杠之后,原来写在一行的字符串,能够分红多行,效果与写在同一行彻底同样。注意,反斜杠的后面必须是换行符,而不能有其余字符(好比空格),不然会报错。ui

链接运算符(+)能够链接多个单行字符串,用来模拟多行字符串。spa

var longString = 'Long '
  + 'long '
  + 'long '
  + 'string';
复制代码

反斜杠在字符串内有特殊含义,用来表示一些特殊字符,因此又称为转义符。prototype

若是字符串的正常内容之中,须要包含反斜杠,则反斜杠前须要再加一个反斜杠,用来对自身转义。code

var path = "C:\\games\\war3\\"
复制代码

ES6扩展

多行字符串

var str =  `
你好
这里是饥人谷
jirengu.com
开启你的前端之路
`
复制代码

字符串模板

var name = '饥人谷'
var website = 'jirengu.com'

var str = `你好, 这里是${name}${website},开启你的前端之路`
//"你好, 这里是饥人谷,jirengu.com,开启你的前端之路"
复制代码

常见的字符串方法

字符串操做不会修改原来的字符串

1.长度计算,链接

var str = "hello";
    console.log( str.length );
    console.log( str[0] );
    console.log( str[str.length - 1]  );
    console.log( str.charAt(0) ); // h
    console.log( str.charCodeAt(0) ); // 返回值是表示给定索引处(String中index索引处)字符的 UTF-16 代码单元值的数字

    var str2 = " world";
    var str3 = str1 + str2;
    cosnole.log( str3 );
复制代码

2.字符串截取

var str = "hello world";
var sub1 = str.substr(1, 3); // 第一个是开始位置, 第二个是长度  ell
var sub2 = str.substring(1, 3); // 第一个是开始位置,第二个是结束位置,长度为第二个-第一个  el
var sub3 = str.slice(1, 3); // 同上 容许负参
复制代码

3.查找

var str = "hello my world";
    var s1 = str.search('my');   //6 找不到为-1
    var s2 = str.replace('my', 'your'); //
    var s3 = str.match('my'); //返回匹配的数组
复制代码

4.大小写

var str = "Hello";
str.toUpperCase(); // 大写
str.toLowerCase(); // 小写
复制代码

Math

Math对象是JavaScript的内置对象,提供一系列数学常数和数学方法。Math对象只提供了静态的属性和方法,因此使用时不用实例化

属性

Math对象提供如下一些只读的数学常数。

Math.E // 2.718281828459045
Math.LN2 // 0.6931471805599453
Math.LN10 // 2.302585092994046
Math.LOG2E // 1.4426950408889634
Math.LOG10E // 0.4342944819032518
Math.PI // 3.141592653589793
Math.SQRT1_2 // 0.7071067811865476
Math.SQRT2 // 1.4142135623730951
复制代码

方法

round

round方法用于四舍五入

Math.round(0.1) // 0
Math.round(0.5) // 1
复制代码

它对于负值的运算结果与正值略有不一样,主要体如今对.5的处理

Math.round(-1.1) // -1
Math.round(-1.5) // -1
复制代码

abs,max,min

abs方法返回参数值的绝对值

Math.abs(1) // 1
Math.abs(-1) // 1
复制代码

max方法返回最大的参数,min方法返回最小的参数

Math.max(2, -1, 5) // 5
Math.min(2, -1, 5) // -1
复制代码

floor(地板),ceil(天花板)

floor方法返回小于参数值的最大整数

Math.floor(3.2) // 3
Math.floor(-3.2) // -4
复制代码

ceil方法返回大于参数值的最小整数

Math.ceil(3.2) // 4
Math.ceil(-3.2) // -3
复制代码

pow,sqrt

pow方法返回以第一个参数为底数、第二个参数为幂的指数值

Math.pow(2, 2) // 4
Math.pow(2, 3) // 8
复制代码

sqrt方法返回参数值的平方根。若是参数是一个负值,则返回NaN

Math.sqrt(4) // 2
Math.sqrt(-4) // NaN
复制代码

log,exp

log方法返回以e为底的天然对数值

Math.log(Math.E) // 1
Math.log(10) // 2.302585092994046
复制代码

求以10为底的对数,能够除以Math.LN10;求以2为底的对数,能够除以Math.LN2。

Math.log(100)/Math.LN10 // 2
Math.log(8)/Math.LN2 // 3
复制代码

exp方法返回常数e的参数次方

Math.exp(1) // 2.718281828459045
Math.exp(3) // 20.085536923187668
复制代码

random

该方法返回0到1之间的一个伪随机数,可能等于0,可是必定小于1

Math.random() // 0.7151307314634323
复制代码

返回一个10~20之间的整数

10 + Math.random() * 10
复制代码

返回一个随机数

// 返回给定范围内的随机数
function getRandomArbitrary(min, max) {
  return Math.random() * (max - min) + min;
}

// 返回给定范围内的随机整数
function getRandomInt(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}
复制代码

返回一个随机的字符串

function randomstr(len) {
    var str = ''
    var dict = '0123456789abcdefghijklmnopqrstuvwxyz_'
    for(var i = 0; i < len;i++) {
        var index = Math.floor( Math.random()*dict.length )
        str += dict[index]
    }
    return str
}
var str = randomstr(11)
console.log(str)
复制代码

三角函数

sin方法返回参数的正弦,cos方法返回参数的余弦,tan方法返回参数的正切。

Math.sin(0) // 0
Math.cos(0) // 1
Math.tan(0) // 0
复制代码

asin方法返回参数的反正弦,acos方法返回参数的反余弦,atan方法返回参数的反正切。这三个方法的返回值都是弧度值。

Math.asin(1) // 1.5707963267948966
Math.acos(1) // 0
Math.atan(1) // 0.7853981633974483
复制代码

Date

时间的表示方式

GMT

是指位于英国伦敦郊区的皇家格林尼治天文台当地的标准时间,由于本初子午线被定义为经过那里的经线。

自1924年2月5日开始,格林尼治天文台负责每隔一小时向全世界发放调时信息。

理论上来讲,格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治上空最高点时)的时间。但因为地球在它的椭圆轨道里的运动速度不均匀,这个时刻可能与实际的太阳时有偏差,最大偏差达16分钟。缘由在于地球天天的自转是有些不规则的,并且正在缓慢减速,所以格林尼治时间基于天文观测自己的缺陷,已经被原子钟报时的协调世界时(UTC)所取代。

UTC

协调世界时(英语:Coordinated Universal Time,法语:Temps Universel Coordonné,简称UTC)是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽可能接近于格林尼治标准时间。中华民国采用CNS 7648的《资料元及交换格式–资讯交换–日期及时间的表示法》(与ISO 8601相似)称之为世界协调时间。中华人民共和国采用ISO 8601:2000的国家标准GB/T 7408-2005《数据元和交换格式 信息交换 日期和时间表示法》中亦称之为协调世界时

CST

北京时间,又名中国标准时间,是中国大陆的标准时间,比世界协调时快八小时(即UTC+8),与香港、澳门、台北、吉隆坡、新加坡等地的标准时间相同。

Javascript 中的 Date

var d = new Date()
console.log(d.toString())   //"Wed Feb 28 2018 17:18:26 GMT+0800 (CST)"
console.log(d.toGMTString()) //"Wed, 28 Feb 2018 09:18:26 GMT"
console.log(d.toUTCString())  //"Wed, 28 Feb 2018 09:18:26 GMT"
console.log(d.toISOString()) //"2018-02-28T09:18:26.967Z"
复制代码

new Date()

使用Date构造函数建立一个Date的实例

var d = new Date()

    d.getTime()         //返回实例对象距离1970年1月1日00:00:00对应的毫秒数
    d.getDate()         //返回实例对象对应每月的几号(从1开始)
    d.getDay()          //返回星期,星期日为0,星期一为1,以此类推
    d.getFullYear()     //返回四位的年份
    d.getMonth()        //返回月份(0表示1月,11表示12月)
    d.getHours()        //返回小时(0~23)
    d.getMilliseconds() //返回毫秒(0-999)
    d.getMinutes()      //返回分钟(0-59)
    d.getSeconds()      //返回秒(0-59)

    var d2 = new Date()
    d2.setDate()
复制代码

##set

  • Date.prototype.setDate(date):设置实例对象对应的每月的几号(1-31),返回改变后毫秒时间戳

  • Date.prototype.setFullYear(year [, month, date]):设置四位年份

  • Date.prototype.setHours(hour [, min, sec, ms]):设置小时(0-23)

  • Date.prototype.setMilliseconds():设置毫秒(0-999)

  • Date.prototype.setMinutes(min [, sec, ms]):设置分钟(0-59)

  • Date.prototype.setMonth(month [, date]):设置月份(0-11)

  • Date.prototype.setSeconds(sec [, ms]):设置秒(0-59)

  • Date.prototype.setTime(milliseconds):设置毫秒时间戳

Date.prototype.toString()

toString方法返回一个完整的时间字符串

var today = new Date();
today.toString(); // "Fri Apr 03 2015 11:17:29 GMT+0800 (CST)"
复制代码

Date.prototype.toUTCString(),Date.prototype.toISOString()

toUTCString方法返回对应的UTC时间,也就是比北京时间晚8个小时。toISOString方法返回对应时间的ISO8601写法。

var today = new Date(1362790014000);

today.toUTCString(); //

today.toISOString(); //
复制代码

##Date.prototype.toDateString(),Date.prototype.toTimeString()

toDateString方法返回日期的字符串形式,toTimeString方法返回时间的字符串形式。

var today = new Date(1362790014000);

today.toDateString(); // "Fri Apr 03 2015"

today.toTimeString(); // "11:17:29 GMT+0800 (CST)"
复制代码

toLocalDateString, toLocalTimeString

toLocalDateString方法返回一个字符串,表明日期的当地写法

toLocalTimeString方法返回一个字符串,表明时间的当地写法

var today = new Date(1362790014000);

today.toLocaleDateString(); // "2015/4/3"

today.toLocaleTimeString(); // "上午11:17:29"
复制代码

new Date(milliseconds)

Date对象接受从1970年1月1日00:00:00 UTC开始计算的毫秒数做为参数。这意味着若是将Unix时间戳做为参数,必须将Unix时间戳乘以1000。

new Date(1378218728000); // Tue Sep 03 2013 22:32:08 GMT+0800 (CST)

// 1970年1月2日的零时
var Jan02_1970 = new Date(3600*24*1000); // Fri Jan 02 1970 08:00:00 GMT+0800 (CST)
复制代码

new Date(datestring)

Date对象还接受一个日期字符串做为参数,返回所对应的时间。全部能够被Date.parse()方法解析的日期字符串,均可以看成Date对象的参数

new Date("2013-02-15")
new Date("2013-FEB-15")
new Date("FEB, 15, 2013")
new Date("FEB 15, 2013")
new Date("Feberuary, 15, 2013")
new Date("Feberuary 15, 2013")
new Date("15, Feberuary, 2013")
复制代码

new Date(year, month [, day, hours, minutes, seconds, ms])

在多个参数的状况下,Date对象将其分别视做对应的年、月、日、小时、分钟、秒和毫秒。若是采用这种用法,最少须要指定两个参数(年和月),其余参数都是可选的,默认等于0。若是只使用年一个参数,Date对象会将其解释为毫秒数。

new Date(2013) // Thu Jan 01 1970 08:00:02 GMT+0800 (CST)
new Date(2013,0) // Tue Jan 01 2013 00:00:00 GMT+0800 (CST)
new Date(2013,0,1) // Tue Jan 01 2013 00:00:00 GMT+0800 (CST)
new Date(2013,0,1,0) // Tue Jan 01 2013 00:00:00 GMT+0800 (CST)
new Date(2013,0,1,0,0,0,0) // Tue Jan 01 2013 00:00:00 GMT+0800 (CST)
复制代码

上面代码(除了第一行)返回的是2013年1月1日零点的时间,能够看到月份从0开始计算,所以1月是0,12月是11。可是,月份里面的天数从1开始计算。

##时间的应用

100天之前是几月几号星期几

var curTime = Date.now()
console.log(new Date(curTime - 100*24*60*60*1000))
复制代码

静态方法

Date.now()

now方法返回当前距离1970年1月1日00:00:00的毫秒数

Date.now(); // 1427974222853

Date.parse()

parse方法用来解析日期字符串,返回距离1970年1月1日 00:00:00的毫秒数

日期字符串的格式应该彻底或者部分符合YYYY-MM-DDTHH:mm:ss.sssZ格式,Z表示时区,是可选的

若是解析失败,返回NaN

Date.parse("January 26, 2011 13:51:50")
Date.parse("Mon, 25 Dec 1995 13:30:00 GMT")
Date.parse("Mon, 25 Dec 1995 13:30:00 +0430")
Date.parse("2011-10-10")
Date.parse("2011-10-10 20:00:00")
Date.parse("2011-10-10T14:48:00")
复制代码

注意事项

在新建日期对象时,若是不设置时间,则认为建立的是 utc 的0点,也就是北京时间8点。 若是设置时间,则是北京时间当前时间。

new Date('2018-01-01')  // Mon Jan 01 2018 08:00:00 GMT+0800 (CST)
new Date('2018-01-01 00:00:00')  //Mon Jan 01 2018 00:00:00 GMT+0800 (CST)
复制代码

常见应用

1.去年的今天是星期几 3.三十天前是的日期 3.距离 2019-01-01 00:00:00 还剩多少天多少小时多少分多少秒 4.按照以下方式格式化某个历史时间

  • 刚刚 (距当前时间小于一分钟)
  • xx 分钟前 (大于等于1分钟,小于1个小时)
  • xx 小时前 (大于等于1小时,小于1天)
  • xx 天前 (大于等于1天,小于1个月)
  • xx 月前 (大于等于1月,小于1年)
  • xx 年前 (大于等于1年)
相关文章
相关标签/搜索