代码中的时间处理
我们常用的时间格式其实都是字符串格式了,但是在代码中为了区分时间和普通字符串,需要将时间转换为Date对象,在js中对应Date对象,在C#中对应DateTime对象,在C++中很多需要自己写
js
1、时间的格式
js中常见时间表示方法有:
指定的时间据 1970/1/1 午夜(GMT 时间)之间的毫秒数;
字符串表示,如20170913,2017-09-13,2017/09/13,Wed Sep 13 2017 08:00:00 GMT+0800 (中国标准时间)
Date对象,将日期转化为js中的Date对象
倒计时,
精确到年或月的日期筛选,因为精确到年和月,没有日,所以不能成为日期格式。
常用js方法:
Date.parse(字符串时间格式) 将时间转换为指定的时间据 1970/1/1 午夜(GMT 时间)之间的毫秒数;指定时间格式可以是大多数字符串时间格式(yyyyMMdd格式不可以)
new Date(字符串时间格式) 将时间转换Date对象,Date对象提供很多常用时间方法,如时间转各种字符串,参考2。
Date对象常用方法见http://www.w3school.com.cn/jsref/jsref_obj_date.asp
2、今天/现在
Date.now() 今天的毫秒数格式 如Date.parse('2017-09-13') 的结果是1505260800000
new Date() 今天的Date类型,提供常用方法。
new Date().toLocaleDateString() 今天本地时间字符串格式,如"2017/9/13"
new Date().toLocaleTimeString() 现在的本地时间部分字符串格式,如"上午10:51:47"
new Date().toLocaleString() 现在的本地时间字符串格式,如"上午10:51:472017/9/13 上午10:52:22"
new Date().toString() 现在的字符串格式,如"Wed Sep 13 2017 10:53:12 GMT+0800 (中国标准时间)"
3、时间比较
时间有3种格式,采用1的方法将两个时间转化为相同格式再比较。
4、IE浏览器下js中时间兼容性
IE认可的时间 格式是yyyy/MM/dd HH:mm:ss。不认可yyyy-MM-dd 和yyyyMMdd。
如在进行字符串转Date对象时,new Date(“20170929”) ,new Date(“2017-09-29 12:00”)都存在兼容性问题,需要使用 new Date(“2017/09/29 12:00”)
SQLServer
--目标时间:20170929 --目标时间的当月第一天 select dateadd(d,1-day('20170929'),'20170929') --目标时间的当月最后一天 select dateadd(d,-day('20170929'),dateadd(m,1,'20170929')) --目标时间是当年的第几周 select datepart(wk,'20170929') --目标时间周周一 SET DATEFIRST 1 select DATEADD(day,1-DATEPART(weekday,'19000107'),'19000107') --目标时间周周末 SET DATEFIRST 1 select DATEADD(day,7-DATEPART(weekday,'19000101'),'19000101') --获取连续时间列 Declare @mindate datetime Declare @maxdate datetime set @mindate = '2010-01-01' set @maxdate = '2010-02-01' ;with temptab(date) as ( select @mindate union all select dateadd(d,1,temptab.date) as date from temptab where dateadd(d,1,temptab.date)<=@maxdate ) select * from temptab