在許多程式語言中,String通常是系統與User之間的資料傳輸類型,不管是User輸入還是系統輸出,或者是資料轉換,都常用到String,所以String的雙向轉換是蠻重要的一環。
在本篇文章中,限量會先介紹其他資料型態轉String的方向,其中值得關注的是DateTime轉String與數值資料型態(decimal, int, float...)轉String的方法。
每種程式語言遇到資料型態轉String的情況時,都有各自的處理方式,像Java與C#有提供ToString()的方法,而C++就必須額外處理。基本上,Java與C#再轉換成String時只要呼叫此資料型態所繼承的ToString()方法就直接轉為String型別,但一些有複雜格式的資料型態,如float, double, decimal, DateTime等可以有許多種格式,像float, double有小數點位數的問題,DateTime有顯示格式的問題(yyyy/MM/dd 或yyyy-MM-dd...等),舉例來說,Java在小數點格式化時要先new一個DecimalFormat物件,在使用format物件的format()方法,DateTime顯示格式時則用SimpleDateFormat物件,相較之下,C#提供的ToString()比較多元,只要在ToString()裡加入格式的相關參數就能輸出我們所想要的格式字串。
本篇將著重在日期格式與數值格式字串的轉換:
上表中紅色字體的部分涉及較複雜的格式操作,在這裡便不多做說明,接著以下的程式碼會將現在時間轉換成各種格式字串提供大家參考:
執行結果:
數值格式字串
格式轉換程式碼:
執行結果:
雖然有一些格式的解釋不太清楚,但限量認為只要能熟悉應用幾個常用的格式,對以後開發程式會有大大的幫助。
參考來源:
MSDN - 標準日期和時間格式字串
MSDN - 標準數值格式字串
在本篇文章中,限量會先介紹其他資料型態轉String的方向,其中值得關注的是DateTime轉String與數值資料型態(decimal, int, float...)轉String的方法。
每種程式語言遇到資料型態轉String的情況時,都有各自的處理方式,像Java與C#有提供ToString()的方法,而C++就必須額外處理。基本上,Java與C#再轉換成String時只要呼叫此資料型態所繼承的ToString()方法就直接轉為String型別,但一些有複雜格式的資料型態,如float, double, decimal, DateTime等可以有許多種格式,像float, double有小數點位數的問題,DateTime有顯示格式的問題(yyyy/MM/dd 或yyyy-MM-dd...等),舉例來說,Java在小數點格式化時要先new一個DecimalFormat物件,在使用format物件的format()方法,DateTime顯示格式時則用SimpleDateFormat物件,相較之下,C#提供的ToString()比較多元,只要在ToString()裡加入格式的相關參數就能輸出我們所想要的格式字串。
本篇將著重在日期格式與數值格式字串的轉換:
日期格式字串
格式是以單一英文字母代表,只要在ToString()中加入代碼就會輸出該格式的字串,以下為C#提供的格式代碼:
格式代號
|
描述
|
格式(zh-TW)
|
d
|
簡短日期
|
yyyy/MM/dd
|
D
|
完整日期
|
yyyy年MM月dd日
|
f
|
完整日期時間
|
yyyy年MM月dd日
tt hh:mm
|
F
|
完整日期時間(含秒)
|
yyyy年MM月dd日
tt hh:mm:ss
|
g
|
簡短日期時間
|
yyyy/MM/dd
tt hh:mm
|
G
|
簡短日期時間(含秒)
|
yyyy/MM/dd
tt hh:mm:ss
|
m
|
月份日期
|
MM月dd日
|
M
|
同m
|
|
o
|
國際標準時間加時區
|
yyyy-MM-ddThh:mm:dd.fffffffzzz
|
O
|
同o
|
|
r
|
RFC時間格式
|
EX: Sat,
22 Mar 2014 19:43:23 GMT
|
R
|
同r
|
|
s
|
可排序日期時間
|
yyyy-MM-ddThh:mm:dd
|
t
|
簡短時間模式
|
tt hh:mm
|
T
|
完整時間模式
|
tt
hh:mm:ss
|
u
|
國際可排序日期時間
|
yyyy-MM-dd
hh:mm:ddZ
|
U
|
國際完整日期時間
|
yyyy年MM月dd日
tt hh:mm:ss
|
y
|
年月
|
yyyy年MM月
|
Y
|
同y
|
上表中紅色字體的部分涉及較複雜的格式操作,在這裡便不多做說明,接著以下的程式碼會將現在時間轉換成各種格式字串提供大家參考:
using System; using System.Linq; namespace ConsoleTest { class Program { static void Main( string[] args ) { var d = DateTime.Now; string[] formatArray = {"d", "D", "f", "F", "g", "G", "M", "m", "O", "o", "R", "r", "s", "t" , "T", "u", "U", "y", "Y"}; Console.WriteLine( "DateTime String Format: " ); formatArray.ToList().ForEach( s => { Console.WriteLine( String.Format( "{0} => {1}", s, DateTime.Now.ToString( s ) ) ); } ); } } }
執行結果:
數值格式字串
格式代號
|
描述
|
C, c
|
轉為貨幣格式($,
NT...)
|
D, d
|
轉為Decimal格式
|
E, e
|
將小數點後轉為指數模式
|
F, f
|
轉換成浮點數格式(EX:
F4(小數點後4位))
|
G, g
|
轉換成浮點數或指數格式(視精簡度)
|
N, n
|
轉換成帶分隔符號
|
P, p
|
轉換為百分比
|
R, r
|
轉換對應型別數字數量(只支援Double,
Single, BigInteger)
|
X, x
|
轉換成16進位
|
格式轉換程式碼:
using System; using System.Linq; namespace ConsoleTest { class Program { static void Main( string[] args ) { var digit = 12345; String[] format = { "C", "D", "E", "F", "G", "N", "P", "X" }; Console.WriteLine( "Numeric String Format: " ); format.ToList().ForEach( s => { Console.WriteLine( String.Format( "{0} => {1}", s, digit.ToString( s ) ) ); } ); double value = Math.PI; Console.WriteLine( String.Format( "{0} => {1}", "R", value.ToString( "r" ) ) ); } } }
執行結果:
雖然有一些格式的解釋不太清楚,但限量認為只要能熟悉應用幾個常用的格式,對以後開發程式會有大大的幫助。
參考來源:
MSDN - 標準日期和時間格式字串
MSDN - 標準數值格式字串
tincboAstolmu Gina Sinclair https://wakelet.com/wake/hywz4u1PuS_7AdEtzpJoT
回覆刪除musmanace