Re: [請益] 請教高手要加3個月的程式寫法

看板 Soft_Job
作者 landlord (不要再下雨了啦)
時間 2013-04-01 23:46:58
留言 26則留言 (5推 0噓 21→)

報告一下,這時候就覺得 C# 真的是很可愛了。 照目前的 test cases 來說,C# 真的只要一個 AddMonth(3) 就結束了。 請見: https://gist.github.com/hatelove/5285685 : 如有一個起的變數是2013/04/01 : 則迄的值就為2013/07/01 : 但如遇到2013/03/31 : 則迄的值就要為2013/06/30 : 目前遇到困擾是31日及2月底日期的判斷 : 造成程式寫法要寫很多if寫法 : 不知各位高手有沒有比較簡單的寫法 就可寫出 : 謝謝 : IF MONTH(s_date) >= 10 THEN : LET e_date=MDY(MONTH(s_date)-9,DAY(s_date),YEAR(s_date)+1) : ELSE : LET e_date=MDY(MONTH(s_date)+3,DAY(s_date),YEAR(s_date)) : END IF : IF e_date IS NULL THEN : IF MONTH(s_date) >= 9 THEN : LET e_date=MDY(MONTH(s_date)-8,DAY(s_date),YEAR(s_date)+1) : ELSE : LET e_date=MDY(MONTH(s_date)+4,DAY(s_date),YEAR(s_date)) : END IF : LET e_date = MDY(MONTH(e_date),1,YEAR(e_date)) - 1 : END IF -- ◆ From: 111.250.141.100
※ 批踢踢實業坊(ptt.cc)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1364831221.A.1FF.html

olctw:確定 test case 有過?感覺好像還是得處理例外,阿不然就太 04/02 00:13

olctw:神奇了 XD 04/02 00:13

landlord:當然有過囉...不然我就不會貼出來啦 需要附圖嗎? XD 04/02 00:14

olctw:試一下 2013-11-30 跟 2015-11-29 ? 04/02 00:25

landlord:恩 一樣OK囉,我把新的test cases更新上去 04/02 00:42

landlord:其實我也覺得挺神奇的 XD 04/02 00:45

landlord:MSDN說明:http://goo.gl/EC87J 04/02 00:48

landlord:把MSDN說明更新上gist了 04/02 00:50

YunJonWei:別懷疑,就是那麼神奇 04/02 00:54

landlord:照MSDN的解釋,要自己實作出來其實也挺簡單的就是了。 04/02 00:58

olctw:真是人性化 XD (抱著 PHP 哭泣中) 04/02 01:14

dryman:這樣一說,直接用JS Date object不就行了? 04/02 06:39

ppking:的確如l大所貼的需求,c++提供的函數滿棒的,不用自己再製作 04/02 08:58

gmoz:M$終歸還是M$ XD 04/02 09:30

lance70176:JS 記得不行 會跟PHP一樣 04/02 12:13

avhacker:C++ 也可以很簡單啊 http://goo.gl/EhYM1 靠 boost 威能 04/02 15:30

uranusjr:Python 有 module 的話這個也是 one-liner 04/02 21:30

uranusjr:其實就是有沒有人先幫你做好輪子的問題而已 04/02 21:31

uranusjr:https://gist.github.com/uranusjr/5292314 04/02 21:46

uranusjr:http://git.io/LbASjQ Ruby 的語法好詭異XD 04/02 22:02

olctw:ruby 那個真的很詭異... 04/02 22:30

TonyQ:var d = new Date(); d.setMonth(d.getMonth()+3); 04/03 03:32

TonyQ:沒有不行的道理~ 04/03 03:33

landlord:所以js 這樣寫,也會直接跳年份,抓月底啊? 04/03 16:14

naviwu:PHP: $d = new DateTime('2006-12-12'); $d->modify('+3 mo 04/09 00:26

naviwu:nths'); (5.3.0以上) 04/09 00:26

您可能感興趣