小歐ou | 菜鳥自救會

努力工作,用心學習
文章數 - 1023, 回應數 - 993, 引用數 - 0

每月文章

技術社群

技術部落格

關於我

[C#][VB.NET]西元轉民國

 

1. 問題描述

使用 DateTime.Now 取得今天的日期時間,但取得的日期格式為西元年,

如何將今天日期顯示於 TextBox 中,且日期格式從西元轉換為民國 ( 2009 轉換為 98 )。

 

2. 方法

可以使用以下兩種方式

2.1 西元轉換民國為 -1911 年,因此可參考以下程式碼作轉換

C#

            textBox1.Text = Convert.ToInt16(DateTime.Now.AddYears(-1911).Year) + DateTime.Now.ToString("/MM/dd");

 

VB.NET

TextBox1.Text = Convert.ToInt16(DateTime.Now.AddYears(-1911).Year) & DateTime.Now.ToString("/MM/dd")

 

執行結果

image

 

2.2 透過 TaiwanCalendar 類別

在命名空間 System.Globalization 中,有 TaiwanCalendar 類別 : 表示台灣使用的曆法。

可使用以下程式碼達成西元轉民國

C#

            DateTime dtNow = DateTime.Now;
            System.Globalization.TaiwanCalendar twC = new System.Globalization.TaiwanCalendar();
            this.textBox1.Text = twC.GetYear(dtNow) + dtNow.ToString("/MM/dd");

 

VB.NET

        Dim dtNow = DateTime.Now
        Dim twC = New System.Globalization.TaiwanCalendar()
        TextBox1.Text = twC.GetYear(dtNow).ToString + dtNow.ToString("/MM/dd")

 

執行結果

image

 

3. 參考

日期格式西元年轉為中文年(2009-->98)



posted on 2009/6/21 21:11 1 人收藏 我要推薦 | 閱讀數 : 33275 訂閱

關連文章

Feedback

# re: [C#][VB.NET]西元轉民國 回覆

民國年還有個特別的issue,就是民國前一年的問題。

西元1911年,是民國前一年,還是民國0年?

這個之前寫過很機車的系統..會用到西元1911年之前的,就要考慮進去。

後來我還是改成TaiwanCalendar,把罪都推給微軟了...

2009/6/21 下午 10:09 | hatelove

# re: [C#][VB.NET]西元轉民國 回覆

感覺好像沒有考慮到民國一百年之後的狀況
所以我即使是民國年 我還是記四位數
0098/12/05
2009/6/21 下午 11:30 | beldandy

# re: [C#][VB.NET]西元轉民國 回覆

To hatelove

您的意見是對的,所以使用 TaiwanCalendar 是比較正做的作法

 

To beldandy

您的意見很好,但考慮民國一百年以後的狀態,只要稍微修正程式碼即可解決,主要的問題還是 hatelove 提出的部份

2009/6/22 上午 12:02 | 小歐ou

# re: [C#][VB.NET]西元轉民國 回覆

用西元年去存,要顯示時再轉就好啦。

2009/6/22 上午 08:28 | regionbbs

# re: [C#][VB.NET]西元轉民國 回覆

原來還有這個class, 感謝分享
2009/6/22 上午 10:35 | petedotnet

回應

標題
姓名
電子郵件 (將不會被顯示)
個人網頁
內容 
  登入後使用進階評論  
Please add 8 and 2 and type the answer here:

Powered by: