Ext.Net 1.2.0_Ext.Net.DateColumn 日期格式问题

本文内容

  • 概述
  • Store RecordField 和 GridPanel DateColumn
  • Ext.Net 源代码片段
  • 演示

 

概述

在使用DateColumn 时,会用到日期格式,代码如下:

<ext:DateColumn Header="日期" DataIndex="FINSERTEDDATE" Format="Y-m-d H:i:s"></ext:DateColumn>

那么 EXT.NET 日期格式是什么?之前以为跟数据库的格式差不多,又在 EXT.NET CHM 文档中找,都不对,其实,EXT.NET 源代码本身就是最好的说明文档。

 

Store RecordField 和 GridPanel DateColumn

Store 控件是不可见。设计它的目的在于将数据缓存在客户端,以便用 JavaScript 对该数据进行排序、分页和筛选等操作。这些操作全是在客户端进行的。

而像 GridPanel 这样的控件,是用于以各种式样呈现 Store 中的数据。

无论是 Store,还是 GridPanel,都可以规定数据的类型及其格式,比如,String、Boolean、Int、Float 等。Store 对某个数据有其默认的类型和格式。

<ext:RecordField Name="ToShortDate" Type="Date" DateFormat="Y-m-d" />

<ext:DateColumn Header="ToLocalTime" DataIndex="ToLocalTime" Format="yyyy-MM-dd" />

它们的联系在于,Store 要先确保能正确识别一个数据的类型和格式,GridPanel 才能正确呈现,或着说以任何你期望的式样显示,特别是日期型数据。举一个极端的例子。如果有日期数据,只有小时和分,如 "11:12",若不对 Store 的 RecrdField 进行任何设置,无论你如何设置 GridPanel DateColumn,它都不能正确显示这个时间。但若这样:

<ext:RecordField Name="ToShortTime" Type="Date" DateFormat="H:i" />

那就可以了。

 

Ext.Net 源代码片段

d:"String.leftPad(this.getDate(), 2, '0')",
D:"Date.getShortDayName(this.getDay())",
j:"this.getDate()",
l:"Date.dayNames[this.getDay()]",
N:"(this.getDay() ? this.getDay() : 7)",
S:"this.getSuffix()",
w:"this.getDay()",
z:"this.getDayOfYear()",
W:"String.leftPad(this.getWeekOfYear(), 2, '0')",
F:"Date.monthNames[this.getMonth()]",
m:"String.leftPad(this.getMonth() + 1, 2, '0')",
M:"Date.getShortMonthName(this.getMonth())",
n:"(this.getMonth() + 1)",
t:"this.getDaysInMonth()",
L:"(this.isLeapYear() ? 1 : 0)",
o:"(this.getFullYear() + (this.getWeekOfYear() == 1 &&this.getMonth() > 0 ? +1 : (this.getWeekOfYear() >= 52 &&this.getMonth() < 11 ? -1 : 0)))",
Y:"String.leftPad(this.getFullYear(), 4, '0')",
y:"('' + this.getFullYear()).substring(2, 4)",
a:"(this.getHours() < 12 ? 'am' : 'pm')",
A:"(this.getHours() < 12 ? 'AM' : 'PM')",
g:"((this.getHours() % 12) ? this.getHours() % 12 : 12)",
G:"this.getHours()",
h:"String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2,'0')",
H:"String.leftPad(this.getHours(), 2, '0')",
i:"String.leftPad(this.getMinutes(), 2, '0')",
s:"String.leftPad(this.getSeconds(), 2, '0')",
u:"String.leftPad(this.getMilliseconds(), 3, '0')",
O:"this.getGMTOffset()",
P:"this.getGMTOffset(true)",
T:"this.getTimezone()",
Z:"(this.getTimezoneOffset() * -60)", 

说明

根据它们的函数名能猜到它们的含义。比如,Y 和 y 表示年;M 和 m 表示月;D 和 d 表示天;H 和 h 表示小时;i 表示分;s 和 u 表示秒;A 和 a 表示上下午。其他的如,L 表示是否为闰年;O 和 P 表示格林威治标准时间(GMT),英国的标准时间,也是世界各地时间的参考标准。中英两国的标准时差为8个小时,即英国当地时间比中国北京时间晚8小时;T 和 Z 表示协调世界时(UTC)等等。

 

演示:以 "2011-07-14 14:05:37" 为例

格式

结果

Y-m-d H:i:s

2011-07-14 14:05:37

y-m-d H:i:s

11-07-14 14:05:37

y-M-d H:i:s

2011-7-14 14:05:37

y-m-d H:i:s L

2011-7-14 14:05:37 0

y-m-d H:i:s T

2011-7-14 14:05:37 UTC

y-m-d H:i:s Z

2011-7-14 14:05:37 28800

y-m-d H:i:s O

2011-7-14 14:05:37 +0800

y-m-d H:i:s P

2011-7-14 14:05:37 +08:00

Y-m-d h:i:s

2011-07-14 2:05:37

Y-m-d H:i:s G

2011-7-14 14:05:37 14

Y-m-d H:i:s a

2011-7-14 14:05:37 下午

Y/m/d H:i:s

2011/07/14 14:05:37

Y/m/dH:i:s

2011/07/1414:05:37

说明

只要字母写对了,字母与字母间的字符无所谓,EXT.NET 会原样显示。

 

下载 Demo

posted @ 2011-07-19 14:36  船长&CAP  阅读(1459)  评论(0编辑  收藏  举报
免费流量统计软件