2015-01-13 31 views
-2

我試圖將數值轉換爲24小時格式化時間,但代碼無法正常工作。這裏是我的代碼:關於將數值轉換爲24小時格式時間的問題

string xx = 
    Convert.ToDateTime(TimeSpan.FromHours(01).ToString()) 
      .ToString("HH", System.Globalization.CultureInfo.InvariantCulture); 

OR 

string xx1 = 
    new DateTime(TimeSpan.FromHours(01).Ticks) 
    .ToString("HH", System.Globalization.CultureInfo.InvariantCulture); 

OR 

var t = DateTime.Now.TimeOfDay; 
string xx2 =new DateTime(t.Ticks).ToString("hh:mm:ss tt"); 

OR 

string ss = TimeSpan.FromHours(01).ToString("HH"); 

上述代碼不起作用。我搜索了Google,並且所有人都表示使用HH以24小時格式獲取小時。任何人都可以告訴我,如果這是我的電腦的具體問題?

+1

你是什麼意思_not working_是什麼意思?你得到任何異常或錯誤信息?你可以請更具體嗎?你的數值是多少? –

+0

得到沒有錯誤,而不是第一行代碼返回01而不是13. – Mou

+0

你怎麼知道01是PM而不是AM? – juharr

回答

0

沒有得到任何錯誤,而代碼返回01,而不是13

第一線,因爲你從午夜添加1小時。您應該添加13小時而不是像;

string xx = Convert.ToDateTime(TimeSpan.FromHours(13).ToString()) 
      .ToString("HH", System.Globalization.CultureInfo.InvariantCulture); 

由於TimeSpan.FromHours(01).ToString()返回01:00:00作爲stringConvert.ToDateTime解析這個字符串作爲13/01/2015 01:00:00

24-hour clock01的表示將與其本身相同,無論您使用hh還是HH說明符。

關於第二個例子,你算算你的TimeSpan作爲TicksDateTime(Int64) constructor01/01/0001計算這個時間和你DateTime evantually將01/01/0001 01:00:00,仍然,這是24小時製表示將01

關於第三個例子,你在呼喚DateTime(Int64)構造與TimeOfDay property,這就是爲什麼你的DateTime將01.01.0001 15:10:36(當我現在運行你的例子),它的hh:mm:ss tt表示將在InvariantCulture03:11:31 PM

你的第四行拋出FormatException因爲有一個TimeSpan沒有standardcustomHH格式說明。

既然你只分析沒有時間日期,此方法返回日期部分爲今天

+0

之前我試圖將01轉換爲24小時制,這是不可能的,因爲01可能是AM或PM。所以告訴我,我們可以將01 PM轉換爲13 - 24小時格式嗎? – Mou

+0

@Mou'01 PM'只是'DateTime'的字符串表示形式,其中'13:00:00'作爲小時部分。如果你想將字符串表示爲'DateTime'的'01 PM',你可以使用'yourDateTime.ToString(「HH tt」,CultureInfo.InvariantCulture)'。如果你想將'01 PM'字符串解析爲'DateTime',你可以使用像DateTime dt = DateTime.ParseExact(「01 PM」,「HH tt」,CultureInfo.InvariantCulture);' –

+0

對不起,最後的代碼應該是'DateTime dt = DateTime.ParseExact(「01 PM」,「hh tt」,CultureInfo.InvariantCulture);'因爲'01 PM'是12小時格式。 –

相關問題