2011年5月11日 星期三

sybase SQL 取得當週星期一(get Monday)

背景說明:要取得當周第一天。(通常系統都是把星期天設為當週第一天)所以一般來說,只要呼叫一個 類似  weekday 之類的函數得出目前是 當周的第 n 天,然後把目前日減掉 n即可。

問題: 以星期一做為一周的第一天。帶入日期取得當週第一天。
原本將日期帶入 weekday 的函數得到的 數字  1~7 直接減的話,得到的日期是星期天。

2011年5月10日 星期二

jQuery UI datepicker 1.8.12 日期輸入限制

jQuery UI datepicker 很方便的讓一個input element 可以有calendar做為協助輸入的ui,不過有時候,要validate 輸入的日期資料時,理想的方式之一就是不要讓不想輸入的資料出現。
舉例來說,如果只想讓使用者輸入 星期一 的日期,其它的日期都不要出現的話。該怎麼做?

jQuery UI datepicker 1.8.12 顯示問題

jQuery datepicker 1.8.12 使用發現一個問題 就是 z-index 每次都會被自動設成 1,如果畫面上有 z-index 大於1的,就有可能被蓋住。

解決方法:一種是設一個很大的數字,另一方式,就是找出目前頁面中z-index 最大的element 然後再設比它大一點。
看起來後者是比較完善的解決方法。要做到此點,請參考下列步驟:

2011年5月1日 星期日

sybase 取得月天數

如何使用SQL ,代入日期,取得當月天數? 例: 傳入 1/23  return 31,傳入  2/10 return 28(潤年29)

javascript 取得 月天數

function daysInMonth(iMonth, iYear)
{
    return 32 - new Date(iYear, iMonth, 32).getDate();
}

iMonth:0~11
iYear:西元年 yyyy

原理說明:
new Date(iYear, iMonth, 32) ,會依 年月日,產生一個日期,但是日期超過該月的部份會使產生的日期變成下個月的日期
舉例:
new Date(2011, 0, 32) ,是指要產生一個日期是 2011年1月32號的,但是因為1月只有31天,所以產生出來的時間變成是2011年2月1號,也就是自動幫你進位了。
產生出來的日期再用 .getDate()取得 "日" 的部份,最後用 32 去減。 換句話說,用32代入產生的日期不管是代到哪個月都會進位,進位後的日數,可能是1 ~ 4 不等,也就是說原本的月份日數是比32 少 1~4不等。 所以用32減去,就是所求。

變通一下,把function 內的兩個32 改成是 35或是其它 >31 但 <60 的數也是可以,只要不要讓它再次進位到下個月執行的意義和原做法就是一樣的。

參考:http://snippets.dzone.com/posts/show/2099