[爆卦]tostring格式是什麼?優點缺點精華區懶人包

為什麼這篇tostring格式鄉民發文收入到精華區:因為在tostring格式這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者a47135 (溫暖的風)看板Soft_Job標題[請益] C# 關於DateTime.tost...


今天遇到了一個問題,就是關於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

azureblaze: Thread.CurrentThread.CurrentCulture改掉?04/01 21:06
azureblaze: 給電腦讀的東西格式最好還是設定一下吧04/01 21:08

當時也沒想到(沒遇過這方面的問題)
我是以為yyyy/MM/dd 的 / 就是指文字字符/,結果去查了才發現 / 是代表系統的日期分
隔符號,定值/字符應該是給yyyy\\/MM\\/dd
※ 編輯: a47135 (114.42.208.136), 04/01/2015 21:10:04

gn00273680: 好特別唷~應該還是改程式比較好吧?! 04/01 21:09
有需要還是會改啦,只是想問問有沒有不改程式的解決方案

明天去測一下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
totte: 不改程式,您要想辦法讓DateTimeFormatInfo.CurrentInfo04/01 22:16
totte: 抓到的是zh-TW 如圖 http://imgur.com/K1siFXo04/01 22:17
totte: 左半邊是.Net原始程式04/01 22:17

意思是說直接去修改.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
totte: 沒有喔 那個DateTime.cs是反組譯看出來的 您基本上改不到吧04/01 22:41
totte: 我的意思是您在OS做的設定 要讓DateTimeFormatInfo.Current 04/01 22:42
totte: .CurrentInfo 抓到的是zh-TW04/01 22:42
robler: 複寫掉或是寫一個新的不就得了=w=04/01 22:42
totte: 我剛剛再追了一下CurrentInfo取得方式 就是azureblaze建議04/01 22:43
totte: http://imgur.com/1pSKehd 04/01 22:47

主要就是因為想到的都改了,還是不知道OS該去哪裡改(不改系統語言的情況下)

leicheong: DateTime.ToString("yyyy/MM/dd",CultureInfo04/01 22:48
leicheong: .InvariantCulture)就好... btw為甚麼不直接給日期?04/01 22:48

那是舉例啦XD TimeNow不是固定的時日
※ 編輯: a47135 (114.42.208.136), 04/01/2015 22:56:23
※ 編輯: a47135 (114.42.208.136), 04/01/2015 22:59:04
leicheong: 我指為什麼不存DateTime進database? UI的事不該在數據04/01 23:00
leicheong: 層面上解決...04/01 23:01

那就是要改程式啦,基本上只要決定要動程式,這個問題就沒什麼好問的了,會問是想說
看看有沒有辦法不動程式的情況下處裡囉,存Datetime格式當然是對的,只是今天不是追
究為啥不這樣做(挖坑的都不知道十幾年前死到哪去的的老鬼了)

會有這種問題就是因為有些王X蛋不照規定寫程式啊,要馬存Datetime要馬存八碼
Datetime不管是2014/04/01還是2014.04.01還是2014-04-01吃得下去,出來也是直接轉成
Datetime作業,八碼就Convert.todatetime(convert.toint32("0000/00/00")),也是沒
有問題

就是有人存帶分隔符號的時間字串才出包的XD

重購的新系統是多國語言版本,有考慮到這部分,只是還是有用舊程式的客戶啊,要費工
去改實在有點雞肋
(尤其這個客戶又很機歪,改什麼程式做什麼都要凹不付錢,根本毫無$可言)

與其花時間去弄這個不如去寫其他客戶的程式 <-很現實的問題

totte: http://goo.gl/jBSxYY 參考這篇看看吧04/01 23:03
leicheong: 另外這種在佈雷的程式碼沒事別動CurrentCulture...否則04/01 23:03
leicheong: 這邊沒事了另一邊可能有bug彈出來...04/01 23:04
※ 編輯: 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
doomdied: 如果不想動schema,自己寫function去做datetime to str04/02 18:34
doomdied: 自己把year+month+day連起來,就不會有問題了,一勞永逸04/02 18:34
doomdied: 不過最好的做法是改schema,存datetime,別存string 04/02 18:35
allenxxx: 客戶要凹你不會往上回報?上面認帳才做,有權自己決定? 04/02 18:38
allenxxx: 我從不作人情,要加東西找我老闆 04/02 18:38

就是老闆給凹我才會去幫他們裝程式的好嗎

我的意思是這種客戶應付一下就好
※ 編輯: a47135 (49.216.233.147), 04/02/2015 18:58:21
robler: 當然是老闆要做人情給客戶凹員工阿...有點常識吧04/02 19:43
robler: 員工吃飽了撐者作人情給客戶? 04/02 19:44

你是回樓上a先生還是我啊XD
※ 編輯: a47135 (49.216.235.88), 04/02/2015 19:46:43

你可能也想看看

搜尋相關網站