欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Ext JS框架中日期函数的用法及日期选择控件的实现

程序员文章站 2022-03-07 11:17:36
ext.date是一个单例,封装了一系列日期操作函数,扩展javascript date的功能,下面列出一些常用的功能。 基本函数: ext.date.add(...

ext.date是一个单例,封装了一系列日期操作函数,扩展javascript date的功能,下面列出一些常用的功能。
基本函数:

  • ext.date.add(date, interval, value) 给date增加或减少时间,这个函数不改变原有date对象的值,而是返回一个新的date对象。
  • ext.date.between(date, start, end) 判断date是否在start和end之间。
  • ext.date.cleartime(date, clone) 把date的时间设置成00小时00分00秒000毫秒。
  • ext.date.clone(date) 克隆date的一个副本。
  • ext.date.format(date, format)把日期格式化,返回格式化后的字符串。
  • ext.date.getdayofyear(date)获取date是年中的第几天。
  • ext.date.getdaysinmonth(date)获取date是月中的第几天。
  • ext.date.getfirstdateofmonth(date)获取date所在月份的第一天。
  • ext.date.getfirstdayofmonth(date)获取date所在月份第一天的星期。
  • ext.date.getlastdateofmonth(date)获取date所在月份的最后一天。
  • ext.date.getlastdayofmonth(date)获取date所在月份最后一天的星期。
  • ext.date.getweekofyear(date) 获取date所在年中的第几个星期。
  • ext.date.isleapyear(date)date所在年份是否闰年。
  • ext.date.now() 返回当前时间到1970年1月1日的毫秒数。在chrome、ie9和ie10中已经有date.now()实现相同的功能。
  • ext.date.parse(input, format, strict)根据输入的字符串创建日期,date.parse()有类似的功能。

下面零碎地举几个例子综合来看一下:

 

实例:实现带week(星期)的日期选择控件
1.问题:

是否使用了ext js 就可以完美的解决 星期的问题呢?

在本系列的第一篇就有说到, ext 的datepicker 并不能看到星期, 需要自己去扩展。

但是, 扩展的时候就有一个问题了:

javascript 语言的date对象每周是从星期天开始。

而ext js的getweekofyear这个方法却又是遵循 iso-8601, 每周是从星期一开始的。(其他的方法又有不是遵循此标准的, ext js混合了不同的日期时间表示标准)。

ext.date.getweekofyear 这个方法的返回值是 1- 53 之间的数。

这样的话, 就会出现一些问题:

ext js 的日期显示控件的显示是从星期天开始: (s m t w t f s (星期天 星期一 星期二  .. 星期六))

但是, 通过选中的时间获取星期时却又是从星期天开始。导致:

每个星期天的星期会小1 (比如2013/08/18 , 星期天, 应该是34周,但是通过这个方法却是算成上一周的结尾 , 33 周)
date = new date("2013/08/18");
var week = ext.date.getweekofyear(date);
alert("week="+week);
ext js 日期控件默认显示了 42天, 这样的话,在两个年交互的地方就会出现问题
是当年显示 53 周呢? 还是下一年的第一周。

2.解决方案:

结合js 的date 对象和 ext js的ext.date, 实现获取星期字串。

每周以星期天为第一天

每年的周数从(1-52), 如果超过52 周,算到下一年的第一周。 比如2013/12/29 为 2013年的53周, 算到 2014年的第一周

返回 “w1334” 这样的周的格式

相关标签: Ext 日期