程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C# DateTime.ToString根據不同語言生成相應的時間格式

C# DateTime.ToString根據不同語言生成相應的時間格式

編輯:關於C語言

我想大家對DateTime.ToString()方法的用法肯定已經非常熟悉了,但我想大家用過的大部分用法都是:DateTime.ToString(“format”),不過本文想講述的是它的另一個重載方法DateTime.ToString("format",IFormatProvider)。

如果大家做的項目中有多語言的需求的話,那麼肯定少不了會有的功能要顯示一個時間,由於文差異域每種語言用戶對時間格式的需求肯定是不一樣的,比如英文中的時間格式是:12/2/2013 8:20:22 PM,而德語的格式是:02.12.2013 20:20:22;這個區別還是很大的,而且如果語言種數多的話,也很難對每種特定語言的時間格式作特定的處理,而且也不利於程序的擴展性。不過萬幸的是微軟給我們提供了CultureInfo這個類,同時這個類繼承了IFormatProvider這個接口,所以我們可以利用它來得到我們想要的時間格式(其它格式也可以通過它來獲取,比哪貨幣等)。

閒話不多說,直接看代碼:

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("zh-cn"); DateTime dt = Convert.ToDateTime("2013-12-2 20:20:22"); Console.WriteLine("當前語言:" + Thread.CurrentThread.CurrentCulture.DisplayName); Console.WriteLine("日期:2013-12-2 20:20:22"); Console.WriteLine("d-短日期模式: " + dt.ToString("d", Thread.CurrentThread.CurrentCulture)); Console.WriteLine("D-長日期模式: " + dt.ToString("D", Thread.CurrentThread.CurrentCulture)); Console.WriteLine("f-完整日期/時間模式(短時間): " + dt.ToString("f", Thread.CurrentThread.CurrentCulture)); Console.WriteLine("F-完整日期/時間模式(長時間): " + dt.ToString("F", Thread.CurrentThread.CurrentCulture)); Console.WriteLine("g-常規日期/時間模式(短時間): " + dt.ToString("g", Thread.CurrentThread.CurrentCulture)); Console.WriteLine("G-常規日期/時間模式(長時間): " + dt.ToString("G", Thread.CurrentThread.CurrentCulture)); Console.WriteLine("m-月日模式(m): " + dt.ToString("m", Thread.CurrentThread.CurrentCulture)); Console.WriteLine("M-月日模式(M): " + dt.ToString("M", Thread.CurrentThread.CurrentCulture)); Console.WriteLine("o-往返日期/時間模式: " + dt.ToString("o", Thread.CurrentThread.CurrentCulture)); Console.WriteLine("R-RFC1123 模式: " + dt.ToString("R", Thread.CurrentThread.CurrentCulture)); Console.WriteLine("s-可排序的日期/時間模式;符合 ISO 8601: " + dt.ToString("s", Thread.CurrentThread.CurrentCulture)); Console.WriteLine("t-短時間模式: " + dt.ToString("t", Thread.CurrentThread.CurrentCulture)); Console.WriteLine("T-長時間模式: " + dt.ToString("T", Thread.CurrentThread.CurrentCulture)); Console.WriteLine("u-通用的可排序日期/時間模式: " + dt.ToString("u", Thread.CurrentThread.CurrentCulture)); Console.WriteLine("U-通用的可排序日期/時間模式: " + dt.ToString("U", Thread.CurrentThread.CurrentCulture)); Console.WriteLine("Y-年月模式: " + dt.ToString("Y", Thread.CurrentThread.CurrentCulture)); Console.WriteLine(dt.ToString("yyyyMMdd")); Console.ReadLine();

在實際應用中,我們可以把第一行的“de-de“換成用戶切換的語言,然後通過設置當前的線程語言為當前語言種類,那麼我們就可以在程序的任一位置通過”Thread.CurrentThread.CurrentCulture”來獲得。以前運行結果對比如下:

從結果可以知道,如果想通過CultureInfo來得到不同的語言格式,那麼就不能用"yyyyMMdd","yyyy-MM-dd"等這種自定義格式。

附:得到貨幣格式的寫法為:decimal d = 123659.256M; d.ToString("c", Thread.CurrentThread.CurrentCulture.NumberFormat);

關於CultureInfo 類

CultureInfo 類保存區域性特定的信息,如關聯的語言、子語言、國家/地區、日歷和區域性約定。此類還提供對 DateTimeFormatInfo、NumberFormatInfo、CompareInfo 和 TextInfo 的區域性特定實例的訪問。這些對象包含區域性特定操作(如大小寫、格式化日期和數字以及比較字符串)所需的信息。

區域性名稱和標識符

區域性名稱遵循 RFC 1766 標准,格式為“<languagecode2>-<country/regioncode2>”,其中 <languagecode2> 是從 ISO 639-1 派生的由兩個小寫字母構成的代碼,<country/regioncode2> 是從 ISO 3166 派生的由兩個大寫字母構成的代碼。例如,美國英語為“en-US”。在雙字母語言代碼不可用的情況中,將使用從 ISO 639-2 派生的三字母代碼;例如,三字母代碼“div”用於使用 Dhivehi 語言的區域。某些區域性名稱帶有指定書寫符號的後綴;例如“-Cyrl”指定西裡爾語書寫符號,“-Latn”指定拉丁語書寫符號。
System.Globalization 命名空間中的此類和其他類接受並使用下列預定義的區域性名稱和標識符。

區域性名稱

區域性標識符

語言-國家/地區

""(空字符串)

0x007F

固定區域性

af

0x0036

南非荷蘭語

af-ZA

0x0436

南非荷蘭語 - 南非

sq

0x001C

阿爾巴尼亞語

sq-AL

0x041C

阿爾巴尼亞語 - 阿爾巴尼亞

ar

0x0001

阿拉伯語

ar-DZ

0x1401

阿拉伯語 - 阿爾及利亞

ar-BH

0x3C01

阿拉伯語 - 巴林

ar-EG

0x0C01

阿拉伯語 - 埃及

ar-IQ

0x0801

阿拉伯語 - 伊拉克

ar-JO

0x2C01

阿拉伯語 - 約旦

ar-KW

0x3401

阿拉伯語 - 科威特

ar-LB

0x3001

阿拉伯語 - 黎巴嫩

ar-LY

0x1001

阿拉伯語 - 利比亞

ar-MA

0x1801

阿拉伯語 - 摩洛哥

ar-OM

0x2001

阿拉伯語 - 阿曼

ar-QA

0x4001

阿拉伯語 - 卡塔爾

ar-SA

0x0401

阿拉伯語 - 沙特阿拉伯

ar-SY

0x2801

阿拉伯語 - 敘利亞

ar-TN

0x1C01

阿拉伯語 - 突尼斯

ar-AE

0x3801

阿拉伯語 - 阿拉伯聯合酋長國

ar-YE

0x2401

阿拉伯語 - 也門

hy

0x002B

亞美尼亞語

hy-AM

0x042B

亞美尼亞語 - 亞美尼亞

az

0x002C

阿澤裡語

az-AZ-Cyrl

0x082C

阿澤裡語(西裡爾語)- 阿塞拜疆

az-AZ-Latn

0x042C

阿澤裡語(拉丁)- 阿塞拜疆

eu

0x002D

巴斯克語

eu-ES

0x042D

巴斯克語 - 巴斯克地區

be

0x0023

白俄羅斯語

be-BY

0x0423

白俄羅斯語 - 白俄羅斯

bg

0x0002

保加利亞語

bg-BG

0x0402

保加利亞語 - 保加利亞

ca

0x0003

加泰羅尼亞語

ca-ES

0x0403

加泰羅尼亞語 - 加泰羅尼亞地區

zh-HK

0x0C04

中文 - 香港特別行政區

zh-MO

0x1404

中文 - 澳門特別行政區

zh-CN

0x0804

中文 - 中國

zh-CHS

0x0004

中文(簡體)

zh-SG

0x1004

中文 - 新加坡

zh-TW

0x0404

中文 - 台灣

zh-CHT

0x7C04

中文(繁體)

hr

0x001A

克羅地亞語

hr-HR

0x041A

克羅地亞語 - 克羅地亞

cs

0x0005

捷克語

cs-CZ

0x0405

捷克語 - 捷克共和國

da

0x0006

丹麥語

da-DK

0x0406

丹麥語 - 丹麥

div

0x0065

馬爾代夫語

div-MV

0x0465

馬爾代夫語 - 馬爾代夫

nl

0x0013

荷蘭語

nl-BE

0x0813

荷蘭語 - 比利時

nl-NL

0x0413

荷蘭語 - 荷蘭

en

0x0009

英語

en-AU

0x0C09

英語 - 澳大利亞

en-BZ

0x2809

英語 - 伯利茲

en-CA

0x1009

英語 - 加拿大

en-CB

0x2409

英語 - 加勒比

en-IE

0x1809

英語 - 愛爾蘭

en-JM

0x2009

英語 - 牙買加

en-NZ

0x1409

英語 - 新西蘭

en-PH

0x3409

英語 - 菲律賓

en-ZA

0x1C09

英語 - 南非

en-TT

0x2C09

英語 - 特立尼達和多巴哥

en-GB

0x0809

英語 - 英國

en-US

0x0409

英語 - 美國

en-ZW

0x3009

英語 - 津巴布韋

et

0x0025

愛沙尼亞語

et-EE

0x0425

愛沙尼亞語 - 愛沙尼亞

fo

0x0038

法羅語

fo-FO

0x0438

法羅語 - 法羅群島

fa

0x0029

波斯語

fa-IR

0x0429

波斯語 - 伊朗

fi

0x000B

芬蘭語

fi-FI

0x040B

芬蘭語 - 芬蘭

fr

0x000C

法語

fr-BE

0x080C

法語 - 比利時

fr-CA

0x0C0C

法語 - 加拿大

fr-FR

0x040C

法語 - 法國

fr-LU

0x140C

法語 - 盧森堡

fr-MC

0x180C

法語 - 摩納哥

fr-CH

0x100C

法語 - 瑞士

gl

0x0056

加利西亞語

gl-ES

0x0456

加利西亞語 - 加利西亞地區

ka

0x0037

格魯吉亞語

ka-GE

0x0437

格魯吉亞語 - 格魯吉亞

de

0x0007

德語

de-AT

0x0C07

德語 - 奧地利

de-DE

0x0407

德語 - 德國

de-LI

0x1407

德語 - 列支敦士登

de-LU

0x1007

德語 - 盧森堡

de-CH

0x0807

德語 - 瑞士

el

0x0008

希臘語

el-GR

0x0408

希臘語 - 希臘

gu

0x0047

古吉拉特語

gu-IN

0x0447

古吉拉特語 - 印度

he

0x000D

希伯來語

he-IL

0x040D

希伯來語 - 以色列

hi

0x0039

印地語

hi-IN

0x0439

印地語 - 印度

hu

0x000E

匈牙利語

hu-HU

0x040E

匈牙利語 - 匈牙利

is

0x000F

冰島語

is-IS

0x040F

冰島語 - 冰島

id

0x0021

印度尼西亞語

id-ID

0x0421

印度尼西亞語 - 印度尼西亞

it

0x0010

意大利語

it-IT

0x0410

意大利語 - 意大利

it-CH

0x0810

意大利語 - 瑞士

ja

0x0011

日語

ja-JP

0x0411

日語 - 日本

kn

0x004B

卡納達語

kn-IN

0x044B

卡納達語 - 印度

kk

0x003F

哈薩克語

kk-KZ

0x043F

哈薩克語 - 哈薩克斯坦

kok

0x0057

貢根語

kok-IN

0x0457

貢根語 - 印度

ko

0x0012

朝鮮語

ko-KR

0x0412

朝鮮語 - 韓國

ky

0x0040

吉爾吉斯語

ky-KG

0x0440

吉爾吉斯語 - 吉爾吉斯坦

lv

0x0026

拉脫維亞語

lv-LV

0x0426

拉脫維亞語 - 拉脫維亞

lt

0x0027

立陶宛語

lt-LT

0x0427

立陶宛語 - 立陶宛

mk

0x002F

馬其頓語

mk-MK

0x042F

馬其頓語 - 前南斯拉夫聯盟馬其頓共和國

ms

0x003E

馬來語

ms-BN

0x083E

馬來語 - 文萊

ms-MY

0x043E

馬來語 - 馬來西亞

mr

0x004E

馬拉地語

mr-IN

0x044E

馬拉地語 - 印度

mn

0x0050

蒙古語

mn-MN

0x0450

蒙古語 - 蒙古

no

0x0014

挪威語

nb-NO

0x0414

挪威語(伯克梅爾)- 挪威

nn-NO

0x0814

挪威語(尼諾斯克)- 挪威

pl

0x0015

波蘭語

pl-PL

0x0415

波蘭語 - 波蘭

pt

0x0016

葡萄牙語

pt-BR

0x0416

葡萄牙語 - 巴西

pt-PT

0x0816

葡萄牙語 - 葡萄牙

pa

0x0046

旁遮普語

pa-IN

0x0446

旁遮普語 - 印度

ro

0x0018

羅馬尼亞語

ro-RO

0x0418

羅馬尼亞語 - 羅馬尼亞

ru

0x0019

俄語

ru-RU

0x0419

俄語 - 俄羅斯

sa

0x004F

梵語

sa-IN

0x044F

梵語 - 印度

sr-SP-Cyrl

0x0C1A

塞爾維亞語(西裡爾語)- 塞爾維亞

sr-SP-Latn

0x081A

塞爾維亞語(拉丁)- 塞爾維亞

sk

0x001B

斯洛伐克語

sk-SK

0x041B

斯洛伐克語 - 斯洛伐克

sl

0x0024

斯洛文尼亞語

sl-SI

0x0424

斯洛文尼亞語 - 斯洛文尼亞

es

0x000A

西班牙語

es-AR

0x2C0A

西班牙語 - 阿根廷

es-BO

0x400A

西班牙語 - 玻利維亞

es-CL

0x340A

西班牙語 - 智利

es-CO

0x240A

西班牙語 - 哥倫比亞

es-CR

0x140A

西班牙語 - 哥斯達黎加

es-DO

0x1C0A

西班牙語 - 多米尼加共和國

es-EC

0x300A

西班牙語 - 厄瓜多爾

es-SV

0x440A

西班牙語 - 薩爾瓦多

es-GT

0x100A

西班牙語 - 危地馬拉

es-HN

0x480A

西班牙語 - 洪都拉斯

es-MX

0x080A

西班牙語 - 墨西哥

es-NI

0x4C0A

西班牙語 - 尼加拉瓜

es-PA

0x180A

西班牙語 - 巴拿馬

es-PY

0x3C0A

西班牙語 - 巴拉圭

es-PE

0x280A

西班牙 - 秘魯

es-PR

0x500A

西班牙語 - 波多黎各

es-ES

0x0C0A

西班牙語 - 西班牙

es-UY

0x380A

西班牙語 - 烏拉圭

es-VE

0x200A

西班牙語 - 委內瑞拉

sw

0x0041

斯瓦希裡語

sw-KE

0x0441

斯瓦希裡語 - 肯尼亞

sv

0x001D

瑞典語

sv-FI

0x081D

瑞典語 - 芬蘭

sv-SE

0x041D

瑞典語 - 瑞典

syr

0x005A

敘利亞語

syr-SY

0x045A

敘利亞語 - 敘利亞

ta

0x0049

泰米爾語

ta-IN

0x0449

泰米爾語 - 印度

tt

0x0044

鞑靼語

tt-RU

0x0444

鞑靼語 - 俄羅斯

te

0x004A

泰盧固語

te-IN

0x044A

泰盧固語 - 印度

th

0x001E

泰語

th-TH

0x041E

泰語 - 泰國

tr

0x001F

土耳其語

tr-TR

0x041F

土耳其語 - 土耳其

uk

0x0022

烏克蘭語

uk-UA

0x0422

烏克蘭語 - 烏克蘭

ur

0x0020

烏爾都語

ur-PK

0x0420

烏爾都語 - 巴基斯坦

uz

0x0043

烏茲別克語

uz-UZ-Cyrl

0x0843

烏茲別克語(西裡爾語)- 烏茲別克斯坦

uz-UZ-Latn

0x0443

烏茲別克語(拉丁)- 烏茲別克斯坦

vi

0x002A

越南語

vi-VN

0x042A

越南語 - 越南

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved