作者 主題: 求最接近的禮拜四日期  (閱讀 2806 次)

0 會員 與 1 訪客 正在閱讀本文。

changchichung

  • 憂鬱的高中生
  • ***
  • 文章數: 148
    • 檢視個人資料
求最接近的禮拜四日期
« 於: 2004-05-24 11:51 »
一 二 三 四 五 六 日

10 11 12 13 14 15 16

17 18 19 20 21 22 23

如果日期是 10 11 12 13 則希望回傳 13 號
如果日期是 14 15 16 則回傳 20 號
語法: ASP 或者 SQL 都可以 ~~~

我本來是打算用 ABS + weekday 去做
把weekday 和 4 做 ABS
會得出規律 變成 3 2 1 0 1 2 3
前面的沒問題
可是後面的五六日會沒辦法判斷去抓下一週的日期
請問大家有其他想法嗎??

Pail

  • 俺是博士!
  • *****
  • 文章數: 1040
  • 性別: 男
    • 檢視個人資料
求最接近的禮拜四日期
« 回覆 #1 於: 2004-05-24 13:31 »
1. input : 日期(day)

2. 把日期換成 weekday.
   落在 0, 1, 2, 3 ==> day  + 3 - (0/1/2/3) ;
   若在 4,5, 6 ==> day + 7 - ( 4/5/6 - 3  ) ;
Pail Luo.
Email: pail.luo@gmail.com

dark

  • 俺是博士!
  • *****
  • 文章數: 1581
    • 檢視個人資料
求最接近的禮拜四日期
« 回覆 #2 於: 2004-05-24 13:39 »
小弟想法恰好與 pail 學長相反 ...

weekday - 4 不取 abs 的話 , 就有正負區分 ... 這時才判斷落在前面後面

changchichung

  • 憂鬱的高中生
  • ***
  • 文章數: 148
    • 檢視個人資料
求最接近的禮拜四日期
« 回覆 #3 於: 2004-05-24 15:37 »
我本來有想法是用 case
可是會又臭又長
如果用 if 那程式也短不到那邊去吧 ~~
想找個規則出來 最好是一兩行script 就解決 @@
用 case 用 if 我都有寫出來
只是程式長成那樣 自己看了都很討厭 @@

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17465
    • 檢視個人資料
    • http://www.study-area.org
求最接近的禮拜四日期
« 回覆 #4 於: 2004-05-24 15:47 »
asp 或 sql 我不會,若是用 gnu date + bash ,try:
代碼: [選擇]
#!/bin/bash

if [ "$(date +%u)" -lt 4 ]; then
        date -d "thursday this week" "+%Y-%m-%d"
else
        date -d "thursday next week" "+%Y-%m-%d"
fi