c 把日期改成數字字串 C 將字串轉換為日期

2021-10-12 13:16:31 字數 2573 閱讀 2921

1.使用convert.todatetime()方法,用法如下:

string str = "2017-08-10";

datetime dt= convert.todatetime(str);

不過convert.todatetime()方法,只能解釋系統能識別的格式的字串,如:

2017-08-10     08/10/2017   2017/08/10,

如果是其他格式的字串,如:20101212 是無法轉換的

2.使用datetime.parse()方法

trycatch(formatexception fe)

messagebox.show(fe.message);

datetime dt;if (datetime.tryparse("20170810", outdt))

messagebox.show(dt.tostring("yyyy-mm-dd"));

}elsecatch(formatexception fe)

messagebox.show(fe.message);

注意:parseexact()方法,必須指定將要解釋的字串日期的格式,如上述的"yyyymmdd"。

和parse()對應的tryparse()一樣,parseexact()也有tryparseexact()方法,而且作用也是一樣

yyyy/mm/dd和yyyy/m/d的區別:

yyyy/mm/dd 只能匹配 2017/12/01這種格式,2017/12/1則無法解釋;要求更嚴格

yyyy/m/d 則技能匹配  2017/12/12,2017/12/01,也能匹配2017/12/1;匹配範圍更大,當月和日不足兩位時,既可以帶0也可以不帶

由於最終處理日期使用的是system.globalization.calendar類,所以不僅要格式滿足,還需要是有效的日期,如:2017/99/99就是無效的

4.通過reflector檢視.net的源**:

parse()和parseexact()方法都有3個過載,繼續深入:

前面兩個parse()方法,底層都是直接呼叫有3個引數的parse(),而這個parse()方法的底層又去呼叫了tryparse():

同理 parseexact()方法的底層原理一樣

所以不管呼叫parse()是tryparse(),底層的處理是一樣的。

5.日期轉換會與區域相關,所以需要考慮cultureinfo

cultureinfo類提供特定區域的書寫系統,日曆、字串、日期和數字的格式化,所以使用不同的cultureinfo輸出的結果可能會不一樣

例如,在全球各地都有客戶端,而伺服器在美國,每一台客戶端傳送回伺服器的日期如果不做任何處理的話,則會出現各種各樣格式的日期,

所以為了不受區域的影響,可以使用 cultureinfo.invariantculture 屬性 (---- invariant 不變的)

注意:cultureinfo.invariantculture關聯的是英語語言,但與國家區域無關;

以上說的todatetime()、parse()、tryparse()、parseexact()、tryparseexact()都能接受乙個cultureinfo型別的引數,

所以只要設定了cultureinfo.invariantculture,即使通過控制面板修改日期和時間的格式,都不會影響到轉換的結果

對應的**如下:

todatetime():

string str = "2017-08-10";

datetime dt= convert.todatetime(str, cultureinfo.invariantculture);

parse():

datetime dt = datetime.parse("2017-08-10", cultureinfo.invariantculture);

tryparse():

if (datetime.tryparse("20170810", cultureinfo.invariantculture, datetimestyles.none, outdt))

parseexact():

datetime dt = datetime.parseexact("20170810", "yyyymmdd", cultureinfo.invariantculture);

tryparseexact():

if (datetime.tryparseexact("20170810", "yyyymmdd", cultureinfo.invariantculture, datetimestyles.none, outdt))

6.總結

如果是將標準的字串轉化為datetime,直接使用convert.todatetime()   或者  datetime.parse()即可;

如果是將比較奇怪格式的字串轉換為datetime,或者只執行某種格式的字串時,就是用datetime.parseexact 和 datetime.tryparseexact();

如果不想****現try--catch塊的,就使用tryparse()或tryparseexact().

如果需要不受區域影響,則加上cultureinfo.invariantculture。

C裡面怎麼把字串轉成數字

字串 123 轉成數字123 怎麼轉?atof 將字串轉換成浮點型數 相關函式 atoi,atol,strtod,strtol,strtoul 表頭檔案 include 定義函式 double atof const char nptr 函式說明 atof 會掃瞄引數nptr字串,跳過前面的空格字元,...

將數字字串轉換為數字

將數字字串轉換為數字的方法有多種,c中有atoi,atof,sscanf函式可用,這些函式的用法可以在msdn里查到,這裡就不在多說了,現在說一種通用的轉換的方法 template bool str2value const std string str,type value,std ios base...

mysql將字串轉成數字

今天寫sql語句時,相對字串型別的數字進行排序,怎麼做呢?需要先轉換成數字再進行排序 1.直接用加法 字串 0 eg select from orders order by mark 0 desc 2.使用函式 cast value as type convert value,type 注 這裡的t...