关于js中的时间处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于js中的时间处理
关于js编程, 主要是, 绝⼤部分是⽤ jquery. 但是, js原⽣的⼀些⽅法和属性也是要掌握的, 这个只是在遇到的时候, 记⼀下就好了, 如:
event的relatedTarget属性: 主要就是针对 mouseout和 mouseover⽽⾔的, 返回跟这个事件相关的 dom元素, mouseout会返回被进⼊的dom元素, mouseover会返回被离开的元素:
$("p").mouseover(function(e){
alert(e.relatedTarget.nodeName); // 这个nameode就是js原⽣的属性名称
});
时间处理都是使⽤ Date这个对象来进⾏的
参考⽂章:
Date , 单独的, ⼤写⾸字母的话, 是⼀个对象; ⼩写的话, 放在⼀个单词的后⾯, 表⽰⼀个⽅法: getDate(): 获取⼀个⽉中的数字,1~31.
时间对象, 也不是总是⽤ var date, 要根据你的实际场合,和语义意义, 来命名, 如: var exam_date = new Date(); var born = new Date(..);
Date对象的初始化:
1. 总是使⽤ new Date([init-param]), 来创建初始化⼀个⽇期对象的, 如同 Array, Object等对象⼀样, 总是使⽤ "构造函数"来创建对象的.
2. 构造函数由多个, 可以有多种初始化⽅式:
不带初始化参数的, 表⽰默认的⽤当前的/现在的/代码执⾏时的时间(包括⽇期+时间)来初始化;
⽤时间戳变量或时间戳字⾯量(⼀个整数) 来初始化; ⽤⽇期/时间格式的参数来初始化: ` var dateobj = new Date(123456); = new Date("2016-01-02 12:00:00");
**计算某个时间点/时间段的年数: **
3. Date的属性和⽅法:
Date的属性, ⼀般很少⽤: 包括
constructor, 这个属性, (提⾼效⼒是最重要的, 可以包括汉字, pinyin, english, 再也不熬夜了10点必睡). 实际上是返回的构造函数的类型:Date var d = new Date();
if(d.constructor == Date) alert("...)
prototype: 原型, 感觉是对⼀个类的引⽤: **prototype 应该是和 instance 相对应的, 由⼀个类实例化⼀个对象时, 叫instance, ⽽由⼀个对象如dateobject, 反推去获得这个对象的类的时候, 就是prototype, ⽤ a_class_object.prototype 获得的就是 the_class **. suoyi, ⽤dateobject.prototype就获得了Date类, 然后就可以向这个类中添加⽅法和属性!
现在, sihu 就可以明⽩$.prototype.extend的含义了: 原型的⽬的和作⽤, 是"⽤来扩展类的属性和⽅法" 是指, 当我们在定义⼀个类的时候, 可能没有事先定义这个类的某些⽅法和属性, 或者你不能, ⽆法预见到这个类应该有哪些⽅法和属性, (有时候, 你也不能总是去修改这个类 , 这个类已经投⼊使⽤了), 或者⼲脆就是类的设计者就赋予了这个类具有某种扩展功能, 如 jQuery, jiu是这样, 你可以通过jQuery.prototype 来获得jquery这个类, 然后你可以扩展⾃⼰的 jquery⽅法和属性....
Date类的⽅法: 这个⽅法主要分为两类, ⼀类是获得时间/⽇期的函数, ⼀类是设置的函数, 主要是记住获取的函数就好了, 设置的值是改变成 set就号了..
函数名功能
getYear()获取四位数的年份
getMonth()获取2位数的⽉数, 这个是从 0 开始的 , 注意不是从1 开始的!!!
getDate()获取2位数的⽇数, 也是从1 开始的
getDay()获取表⽰星期的数字, 注意星期天返回的是0, ...
getHours()获取⼩时数...
getMinites()...
getSeconds()...
**getTime()获取dateobject 到 1970年 1⽉1⽇ 0点0时0分的毫秒数
** valueOf()反过来,获取⽇期对象的毫秒数
** Date.parse()反过来, 获取...毫秒数
转换成字符串的函数...
toString()全部转变成字符串...
toDateString()只转变⽇期字符串
toTimeString()只转变时间字符串
day和date的区别: ⽼美说, day是指的星期⼏, date是指的⼏号, what's the day today? (the day是指发⽣重⼤事件的历史上的哪⼀天...) *** 图⽚本⾝要求顶格写, 但是图⽚的前⾯不能加空⾏, 否则会切断前⾯的排序模式, 因为顶格+ 空⾏两个条件⼀起满⾜的时候, 就打断前⾯的模式....***
4. 使⽤function 来定义⼀个类? 这个函数默认就可以作为类的构造函数?
js 处理⽇期的例⼦:
这⾥如果⽤ getYear, 会返回 116年.. 因为, getYear是从1990年开始算的, 所以是 2016-1990 = 116 年, getYear明确的说被禁⽤了, 应该使⽤ getFullYear()....
要记住getMonth 跟 getDay⼀样, 也是从 0 开始的, 所以 getMonth的⽉份数, 也要 +1, 加1.
** 没有ff的js调试器, 写js真的是⼀场噩梦, 很难找到 js的错误: 在定义 js的类的时候, 凡是类中的属性和成员⽅法, 的定义, 它是⼀个语句, 所以⼀定要在语句的后⾯, 加上分号; 否则会出错的! 下⾯的32⾏, 是定义⼀个函数construct, (初始化构造函数),是⼀个语句, 所以 "并不是所有的⼤括号后⾯都不加分号, 要看它是语句还是结构. **
下⾯会报错: construct函数没有定义:
所以在32⾏后⾯加上分号, 就可以了:
????? 同样会报错: construct函数没有定义? 说明, 在js类的⾥⾯, 只要是 "私有"变量, 都可诶直接refer, ⽽公有变量, 不管是定义还是调⽤/使⽤都要加this/
最后总结
关于⽤函数来定义⼀个类, ⼜是⼀个很长的话题: 参考这篇⽂章: , 讲得很好, 很透彻:
如⽂中所⾔, js不⽀持⾯向对象编程, 也没有class关键字, 没有继承extends或:, 没有虚拟函数virtual. 但是可以实现/"模拟"类的使⽤和功能, 这个叫做: "伪类"
如何定义⼀个类, 没有关键字class, ⽤什么了? **⽤function! **
在js中, 总的类根是 : Object, ⽽Function 是继承⾃ Object的, ⽽ function 函数是Function类的实例. 因此在 js中, 是⽤ function 来定义⼀个类的. 你可以把这个 "function" 关键字, 就看作是"class" 关键字. 或zhe把 function ...就看作是类的构造函数在"类"中, 私有的属性和⽅法, 使⽤ var来定义, (如同在函数中定义变量⼀样, var 是函数内部的变量, 不写var则是全局变量, 这个跟类的这个情况也是类似的), 全局属性和⽅法, 使⽤this来定义.
**js类也可以有构造函数. 外⾯的那个 function JsClass 应该看成是类名, 在类⾥⾯, 定义⼀个函数, init(...), 然后在类⾥⾯调⽤⼀次这个init()⽅法. 这样, 在每⼀次初始化⼀个类的对象时,就会⾃动去执⾏这个init⽅法, 可以把这个init⽅法就看成是类JsC 类的静态⽅法和静态属性: 放在类定义的外⾯, 使⽤类名.属性名=... 类名.⽅法名=function()...., 类名.⽅法名(para1, para2...)= function(para1, para2...)..., 后⾯就⽤类名来引⽤静态⽅法和属性..
类中的成员⽅法要访问类的⾃⼰的变量, 不像c/java等,可以直接访问, 这个居然也分 "私有还是共有", 如果是私有成员属性, 直接写, 如果是公有属性, 加this...
这⾥明确的说到了: ⽤function来代替class (等同于) 来定义⼀个类.
实例化⼀个类, 可以在类名前加上⼀个 a, 表⽰⼀个...
保留this到私有成员变量中: var _this=this;
喜欢熟悉上js, php这样的动态语⾔了. js和php的函数原型声明中会 "提⽰"变量的类型, 只是在函数原型的声明中, 实际在定义和调⽤/引⽤/reference时,都不会指定类型符. 动态语⾔, 灵活: 声明时灵活, 直接, 变量的类型是由赋值或表达式或context 来决定的; ⽽且可以⾃动实现隐式转换. js和php的编程基本上是相通的,⼀样的...
关于时间的处理和规定
时间的标准在各⾏各业很多, 在编程中⽤的较多的是 utc和gmt:
utc: universal time coordinated. (协调世界时 ), 是由美国的国际⽆线电咨询委员会规定并推荐的.
gmt, 也叫ut0. 也叫世界时, utc是在世界时的前⾯加上"协调"
utc和gmt, 相差0.9s, 中间⽤闰秒来控制
关于⽇期和时间的格式的标准化表⽰:
⽇期和时间可以⽤分隔符-和:, 也可以不⽤分隔符; 年⽤四位数字, ⽇⽉⽤两位数字,不⾜的补零; 时间⽤24⼩时制, 两位数字表⽰, 不⾜的补零
2014年2⽉3⽇: 2014-02-03, 20140203(不⽤斜线分隔, 可能是因为斜线 / 在系统中表⽰⽬录分隔符或其他系统表⽰意义, 在程序中不好处理的原因..?)
14点13分03秒: 14:13:03, 141303.。