2014年3月1日 星期六

ASP.NET MVC 4 WebApi 與 Extjs 的結合 -- 日期運算

Ext.Date 日期運算是一個輔助性質的靜態方法集合,用於處理日期與時間。日期與時間部分 javascript 也可以做到,請參考 計算日期和時間 (JavaScript)

此篇文章比較偏向 Extjs 需要了解的輔助方法,與 MVC 4 WebApi 比較沒有關係。

格式符號 說明 返回值範例
d 月份中的天數,2 位數,不足補 0 01 至 31
D 該日期的星期縮寫,3 個字母 Mon 至 Sun
j 月份中的天數,不補 0 1 至 31
l 該日期的星期完整文字表示 Sunday 至 Saturday
N 該日期的星期 ISO-8601 數字表示法 1 ( Monday )至 7 ( Sunday )
S 月份中日期序數的後綴字詞,2 個字母,通常與 j 一起使用 1 至 31
w 該日期的星期數字表示法 0 ( Sunday ) 至 6 ( Saturday )
z 該日期一年中的天數 0 至 364 ( 閏年為 365 )
W 該日期一年中的 ISO-8601 週數,一星期以 Monday 開始 01 至 53
F 月份完整文字表示 January 至 December
m 月份的數字表示法,2 位數,不足補 0 01 至 12
M 月份的縮寫 Jan 至 Dec
n 月份的數字表示法,2 位數,不補 0 1 至 12
t 該日期的月份中天數 28 至 31
L 是否為閏年 1 ( 是 ) 或 0 ( 否 )
o ISO-8601 的年份數字(與 Y ㄧ樣,但若對應日期 ISO 星期 W 屬於之前一年或後一年,則會使用該年份數字) 1998 或 2004
Y 年份的完整數字表示法 1999 至 2003
y 年份的 2 位數字表示法 99 至 03
a 該日期時間上午或下午小寫表示法 am 至 pm
A 該日期時間上午或下午大寫表示法 AM 至 PM
g 12 小時制格式表示的小時數,不補 0 1 至 12
G 24 小時制格式表示的小時數,不補 0 0 至 23
h 12 小時制格式表示的小時數,2 位數,不足補 0 01 至 12
H 24 小時制格式表示的小時數,2 位數,不足補 0 00 至 23
i 分鐘數,2 位數,不足補 0 00 至 59
s 秒鐘數,2 位數,不足補 0 00 至 59
u 秒的小數 001 (即:0.001s) 或
100 (即:0.100s) 或
999 (即:0.999s) 或
999876543210 (即:0.999876543210s)
O 以時鍾及分鍾數表示與格林威治間 (GMT) 之差 +0800
P 以時鍾及分鍾數表示與格林威治間 (GMT) 之差,冒號隔開 +08:00
T 電腦所在時區的縮寫 EST、MDT、PDT ...
Z 以秒數表示時區偏移 (如果在 UTC 的西邊為負數,東邊為正數) -43200 至 50400
c ISO 8601日期,請參考:http://www.w3.org/TR/NOTE-datetime 2014-02-19T14:52:13+08:00
U 自 January 1 1970 00:00:00 GMT 以來的秒數 1193432466 或 -2138434463
MS MICROSOFT AJAX 序列化日期/td> /Date(1392793013337)/
time 自 January 1 1970 00:00:00 GMT 以來的毫秒數 1350024476440
timestamp 自 January 1 1970 00:00:00 GMT 以來的秒數與 U 相同 1350024866

以下是常見的標準日期時間的格式,這不內建於 Ext.Date 內,可以在程式碼共用地區加上此程式碼,就可以在所有地方執行,你可以任意增刪此格式,讓它對於你的程式更加完整。
Ext.Date.patterns = {
    ISO8601Long: "Y-m-d H:i:s",
    ISO8601Short: "Y-m-d",
    ShortDate: "n/j/Y",
    LongDate: "l, F d, Y",
    FullDateTime: "l, F d, Y g:i:s A",
    MonthDay: "F d",
    ShortTime: "g:i A",
    LongTime: "g:i:s A",
    SortableDateTime: "Y-m-d\\TH:i:s",
    UniversalSortableDateTime: "Y-m-d H:i:sO",
    YearMonth: "F, Y"
};

在程式碼上就可以這樣使用:
var dt = new Date();
Ext.Date.format(dt, Ext.Date.patterns.ShortDate);

Ext.Date 方法

add


日期加法運算
// 基本用法
var dt = Ext.Date.add(new Date('10/29/2006'), Ext.Date.DAY, 5);
console.log(dt); // returns 'Fri Nov 03 2006 00:00:00'

// 負值會扣除
var dt2 = Ext.Date.add(new Date('10/1/2006'), Ext.Date.DAY, -5);
console.log(dt2); // returns 'Tue Sep 26 2006 00:00:00'

 // 小數也可以使用
var dt3 = Ext.Date.add(new Date('10/1/2006'), Ext.Date.DAY, 1.25);
console.log(dt3); // returns 'Mon Oct 02 2006 06:00:00'

between


檢查日期是否在區間日期內
Ext.Date.between(new Date(),new Date("07-19-2014"),new Date("07-21-2014"))

clearTime


清除時間

clone


複製,以下程式碼就能說明,複製出來的修改位置不同
// 錯誤用法:
var orig = new Date('10/1/2006');
var copy = orig;
copy.setDate(5);
console.log(orig);  // returns 'Thu Oct 05 2006'!

// 正確用法:
var orig = new Date('10/1/2006'),
    copy = Ext.Date.clone(orig);
copy.setDate(5);
console.log(orig);  // returns 'Thu Oct 01 2006'

format


日期輸出格式,文章一開頭有說明格式規則
Ext.Date.format(new Date(),'Y-m-d') 

formatContainsDateInfo


是否包含日期格式 (Y 或 m 或 d)
Ext.Msg.alert("提示", Ext.Date.formatContainsHourInfo('Y-m-d H:i:s')); // true

formatContainsHourInfo


是否包含時間格式 (H 或 i 或 s)
Ext.Msg.alert("提示", Ext.Date.formatContainsHourInfo('Y-m-d H:i:s')); // true


getDayOfYear


取得該日期是一年中的第幾天
Ext.Date.getDayOfYear(new Date())

getDaysInMonth


取得該日期之月份的天數
Ext.Date.getDaysInMonth(new Date())

getElapsed


取得兩日期相差之毫秒數
Ext.Date.getElapsed(new Date(), Ext.Date.add(new Date(), Ext.Date.DAY, 1)); // 86400000

getFirstDateOfMonth


取得該日期之月份的第一天日期
Ext.Date.getFirstDateOfMonth(new Date()) // 2014-02-01

getFirstDayOfMonth


取得該日期之月份第一天日期的星期數字表示法,0 ( Sunday ) - 6 ( Saturday )
Ext.Date.dayNames[Ext.Date.getFirstDayOfMonth(new Date())] 

getGMTOffset


以時鍾及分鍾數表示與格林威治間 (GMT) 之差
Ext.Msg.alert("提示", Ext.Date.getGMTOffset(new Date()));

getLastDateOfMonth


取得該日期之月份的最後一天日期
Ext.Date.getLastDateOfMonth(new Date())

getLastDayOfMonth


取得該日期之月份第最後一天日期的星期數字表示法,0 ( Sunday ) - 6 ( Saturday )
Ext.Date.dayNames[Ext.Date.getLastDayOfMonth(new Date())]

getMonthNumber


取得月份名稱的數字表示法,0 - 11
Ext.Date.getMonthNumber('May') // 4

getShortDayName


取得星期簡稱,傳入 0 - 6
Ext.Date.getShortDayName(6) // Sat

getShortMonthName


取得月份簡稱
Ext.Date.getShortMonthName(6) // Jul

getSuffix


傳回日期後綴字詞

getTimezone


電腦所在時區的縮寫

getWeekOfYear


取得該日期之一年中的週數
Ext.Date.getWeekOfYear(new Date())

isDST


是否為日光節約時間

isEqual


比較兩日期是否相等


isLeapYear


是否為閏年

isValid


驗證日期是否正確
Ext.Date.isValid(2014, 2, 28) // true
Ext.Date.isValid(2014, 2, 29) // false

now


自 January 1 1970 00:00:00 GMT 以來的秒數

parse


字串轉換日期
//dt = Fri May 25 2007 (current date)
var dt = new Date();

//dt = Thu May 25 2006 (today's month/day in 2006)
dt = Ext.Date.parse("2006", "Y");

//dt = Sun Jan 15 2006 (all date parts specified)
dt = Ext.Date.parse("2006-01-15", "Y-m-d");

//dt = Sun Jan 15 2006 15:20:01
dt = Ext.Date.parse("2006-01-15 3:20:01 PM", "Y-m-d g:i:s A");

// attempt to parse Sun Feb 29 2006 03:20:01 in strict mode
dt = Ext.Date.parse("2006-02-29 03:20:01", "Y-m-d H:i:s", true); // returns null

subtract


日期減法運算
// 基本用法
var dt = Ext.Date.subtract(new Date('10/29/2006'), Ext.Date.DAY, 5);
console.log(dt); // returns 'Tue Oct 24 2006 00:00:00'

// 負值會累加
var dt2 = Ext.Date.subtract(new Date('10/1/2006'), Ext.Date.DAY, -5);
console.log(dt2); // returns 'Fri Oct 6 2006 00:00:00'

 // 小數也可以使用
var dt3 = Ext.Date.subtract(new Date('10/1/2006'), Ext.Date.DAY, 1.25);
console.log(dt3); // returns 'Fri Sep 29 2006 06:00:00'

unescapeFormat

移除日期格式之逸出字元

Ext.Date.unescapeFormat('Y-m-d \\') // Y-m-d


參考與引用:Ext JS 4.2.0文档翻译:Ext.DateExt.DateView

沒有留言 :

張貼留言

Related Posts Plugin for WordPress, Blogger...