[請益] C井 關於DateTime.tostring的格式問題

看板Soft_Job (軟體人)作者 (溫暖的風)時間11年前 (2015/04/01 20:49), 11年前編輯推噓7(7019)
留言26則, 7人參與, 最新討論串1/1
今天遇到了一個問題,就是關於OS系統和C#中的Datetime.tostring的問題 一般我自己寫程式是用.tostring("yyyy/MM/dd") 中文OS的輸出就是很正常的2015/04/01這樣,但是今天幫客戶裝系統遇到了一個問題 就是作業系統的OS是英文版(國外的跨國公司) 結果tostring("yyyy/MM/dd")的輸出格式變成這樣2015.04.01 如果存SQL的時候格式是Datetime或是轉換過存字串20150401八碼這樣其實不會有什麼問 題 偏偏踩到不知道哪個潛貝留的坑(還好大一坑,到處都是) SQL資料給我存字串 -> 2015/04/01這樣 ,結果程式就掛掉了 (變成SQL的where條件是2015.04.01,完全撈不到資料,諸如此類的問題) 當然是可以改程式啦,不過考慮到系統本身就沒考慮到這方面的問題,怕會有其他地方出 錯,想說還是調整OS的部份讓他能夠輸出正確 (當然如果真的沒辦法只好調整程式了) 我地區、日期時間格式等都調整了,OS右下角顯示的日期也是2015/04/01,但是程式裡面 的tostring("yyyy/MM/dd")的輸出還是2015.04.01 系統語言還是ENGILSH,他們IT堅持不給我改這個,想請問 1.是不是改了系統語言就會照我想的輸出2015/04/01這樣呢? 2.還是說還有哪裡的OS設定我漏了調整了? 還請有相關經驗的人回答 P.S. OS是Server 2012 R2、幫客戶安裝的是IIS架的網站 有去GOOGLE到OS可以設定日期分隔符號,可是那好像是Server 2003才有的設定,我Serve r 2012 R2的作業系統找不到這個設定 回報一下,最後是調整IIS的.NET全球化設定改為中文台灣解決問題 -- 我覺得驅逐艦是艦隊裡最萌的艦種了 潛航戰正輕航重重輕 ▁▁▁▁ ◢ 真 其他的都應該重造 水空艦規空空巡雷巡██ /- 。 艦戰 空母巡洋裝洋□–□◤ 紳 如果各位有興趣的話可以一起成為驅逐艦 艦 母 洋艦巡艦 ◢ 士 但是要經過蘿ㄏㄨ 改造 艦 洋 提 因為我們只會接受蘿莉 絕對不會接受外觀超過14歲的BBA //█◣※ 發信站 批踢踢實業坊 來自 ※ 文章網址 ※ 編輯 ※ 編輯 ※ 編輯 manaup: poi? 04/01 21:02 BBA

04/01 21:06, , 1F
Thread.CurrentThread.CurrentCulture改掉?
04/01 21:06, 1F

04/01 21:08, , 2F
給電腦讀的東西格式最好還是設定一下吧
04/01 21:08, 2F
當時也沒想到(沒遇過這方面的問題) 我是以為yyyy/MM/dd 的 / 就是指文字字符/,結果去查了才發現 / 是代表系統的日期分 隔符號,定值/字符應該是給yyyy\\/MM\\/dd ※ 編輯: a47135 (114.42.208.136), 04/01/2015 21:10:04

04/01 21:09, , 3F
好特別唷~應該還是改程式比較好吧?!
04/01 21:09, 3F
有需要還是會改啦,只是想問問有沒有不改程式的解決方案 明天去測一下IIS的全球化設定改成台灣中文看看 (忘記說幫客戶裝的程式是網站) ※ 編輯: a47135 (114.42.208.136), 04/01/2015 21:11:31 ※ 編輯: a47135 (114.42.208.136), 04/01/2015 21:12:01 ※ 編輯: a47135 (114.42.208.136), 04/01/2015 21:12:42

04/01 22:16, , 4F
不改程式,您要想辦法讓DateTimeFormatInfo.CurrentInfo
04/01 22:16, 4F

04/01 22:17, , 5F
抓到的是zh-TW 如圖 http://imgur.com/K1siFXo
04/01 22:17, 5F

04/01 22:17, , 6F
左半邊是.Net原始程式
04/01 22:17, 6F
意思是說直接去修改.tostring嗎XD 倒是個很簡潔的方式,我還沒想過說XD ※ 編輯: a47135 (114.42.208.136), 04/01/2015 22:31:51 ※ 編輯: a47135 (114.42.208.136), 04/01/2015 22:32:37

04/01 22:41, , 7F
沒有喔 那個DateTime.cs是反組譯看出來的 您基本上改不到吧
04/01 22:41, 7F

04/01 22:42, , 8F
我的意思是您在OS做的設定 要讓DateTimeFormatInfo.Current
04/01 22:42, 8F

04/01 22:42, , 9F
.CurrentInfo 抓到的是zh-TW
04/01 22:42, 9F

04/01 22:42, , 10F
複寫掉或是寫一個新的不就得了=w=
04/01 22:42, 10F

04/01 22:43, , 11F
我剛剛再追了一下CurrentInfo取得方式 就是azureblaze建議
04/01 22:43, 11F

04/01 22:47, , 12F
04/01 22:47, 12F
主要就是因為想到的都改了,還是不知道OS該去哪裡改(不改系統語言的情況下)

04/01 22:48, , 13F
DateTime.ToString("yyyy/MM/dd",CultureInfo
04/01 22:48, 13F

04/01 22:48, , 14F
.InvariantCulture)就好... btw為甚麼不直接給日期?
04/01 22:48, 14F
那是舉例啦XD TimeNow不是固定的時日 ※ 編輯: a47135 (114.42.208.136), 04/01/2015 22:56:23 ※ 編輯: a47135 (114.42.208.136), 04/01/2015 22:59:04

04/01 23:00, , 15F
我指為什麼不存DateTime進database? UI的事不該在數據
04/01 23:00, 15F

04/01 23:01, , 16F
層面上解決...
04/01 23:01, 16F
那就是要改程式啦,基本上只要決定要動程式,這個問題就沒什麼好問的了,會問是想說 看看有沒有辦法不動程式的情況下處裡囉,存Datetime格式當然是對的,只是今天不是追 究為啥不這樣做(挖坑的都不知道十幾年前死到哪去的的老鬼了) 會有這種問題就是因為有些王X蛋不照規定寫程式啊,要馬存Datetime要馬存八碼 Datetime不管是2014/04/01還是2014.04.01還是2014-04-01吃得下去,出來也是直接轉成 Datetime作業,八碼就Convert.todatetime(convert.toint32("0000/00/00")),也是沒 有問題 就是有人存帶分隔符號的時間字串才出包的XD 重購的新系統是多國語言版本,有考慮到這部分,只是還是有用舊程式的客戶啊,要費工 去改實在有點雞肋 (尤其這個客戶又很機歪,改什麼程式做什麼都要凹不付錢,根本毫無$可言) 與其花時間去弄這個不如去寫其他客戶的程式 <-很現實的問題

04/01 23:03, , 17F
http://goo.gl/jBSxYY 參考這篇看看吧
04/01 23:03, 17F

04/01 23:03, , 18F
另外這種在佈雷的程式碼沒事別動CurrentCulture...否則
04/01 23:03, 18F

04/01 23:04, , 19F
這邊沒事了另一邊可能有bug彈出來...
04/01 23:04, 19F
※ 編輯: a47135 (114.42.208.136), 04/01/2015 23:18:14 ※ 編輯: a47135 (114.42.208.136), 04/01/2015 23:27:37 ※ 編輯: a47135 (114.42.208.136), 04/01/2015 23:32:34 ※ 編輯: a47135 (60.245.65.202), 04/02/2015 09:27:06

04/02 18:34, , 20F
如果不想動schema,自己寫function去做datetime to str
04/02 18:34, 20F

04/02 18:34, , 21F
自己把year+month+day連起來,就不會有問題了,一勞永逸
04/02 18:34, 21F

04/02 18:35, , 22F
不過最好的做法是改schema,存datetime,別存string
04/02 18:35, 22F

04/02 18:38, , 23F
客戶要凹你不會往上回報?上面認帳才做,有權自己決定?
04/02 18:38, 23F

04/02 18:38, , 24F
我從不作人情,要加東西找我老闆
04/02 18:38, 24F
就是老闆給凹我才會去幫他們裝程式的好嗎 我的意思是這種客戶應付一下就好 ※ 編輯: a47135 (49.216.233.147), 04/02/2015 18:58:21

04/02 19:43, , 25F
當然是老闆要做人情給客戶凹員工阿...有點常識吧
04/02 19:43, 25F

04/02 19:44, , 26F
員工吃飽了撐者作人情給客戶?
04/02 19:44, 26F
你是回樓上a先生還是我啊XD ※ 編輯: a47135 (49.216.235.88), 04/02/2015 19:46:43
文章代碼(AID): #1L6-bdXp (Soft_Job)
文章代碼(AID): #1L6-bdXp (Soft_Job)