我用UTC時間存儲用戶時間,當我顯示它時,我需要將它轉換爲下午時間。如何將時間範圍轉換爲下午或上午時間?
這裏是例如在數據庫中,我已經17:00:00轉換至下午5:00
這裏是我想出了到目前爲止的代碼,但它不工作
var time = DateTime.ParseExact(object.Time.ToString(), "HHmm", CultureInfo.CurrentCulture).ToString("hh:mm tt");
我用UTC時間存儲用戶時間,當我顯示它時,我需要將它轉換爲下午時間。如何將時間範圍轉換爲下午或上午時間?
這裏是例如在數據庫中,我已經17:00:00轉換至下午5:00
這裏是我想出了到目前爲止的代碼,但它不工作
var time = DateTime.ParseExact(object.Time.ToString(), "HHmm", CultureInfo.CurrentCulture).ToString("hh:mm tt");
var time = DateTime.ParseExact("17:00", "HH:mm", null).ToString("hh:mm tt");
回報05:00 PM
DateTime.ParseExact將返回日期時間
編輯:
包含的CultureInfo
var time = DateTime.ParseExact("17:00", "HH:mm", null).ToString("hh:mm tt", CultureInfo.GetCultureInfo("en-US"));
它取決於'CultureInfo.CurrentCulture'。檢查:var time = DateTime.ParseExact(「17:00」,「HH:mm」,null).ToString(「hh:mm tt」,CultureInfo.GetCultureInfo(「es-ES」));'。 –
我的意思是,對於文化ES ES它不會顯示AM/PM ...:-) –
@KirillPolishchuk:用這個擴展方法更新可能很好:public static string ToAMPM(this TimeSpan timespan) {DateTime dt = DateTime.ParseExact(「17:00」,「HH:mm」,null) ; var timeString = dt.ToString(「hh:mm tt」,System.Globalization.CultureInfo.GetCultureInfo(「en-US」)); return timeString; } – Lee
時間跨度是持續時間「17小時」,而不是時間。也許將此添加到日期(僅)並使用現有的日期時間格式選項? (雖然手錶夏令)
即
string s = DateTime.Today.Add(duration).ToString(specifier);
不要忘記指定適當的文化,例如:CultureInfo.InvariantCulture
。
var time = DateTime.Now.ToString("h:mm tt", CultureInfo.InvariantCulture);
基於您的評論,首先轉換TimeSpan
爲DateTime
:
var dtUtc = DateTime.Now.ToUniversalTime();
dtUtc.AddHours(timeSpanObject.Hours);
dtUtc.AddMinutes(timeSpanObject.Minutes);
一旦它的一個DateTime
,你可以從UTC將其轉換爲本地時間:
var dtLocal = dtUtc.ToLocalTime();
只有w母雞你顯示它,你會包括AM/PM,如:
dtLocal.ToString("h:mm tt");
我只需要用我的TimeSpan顯示靜態HTML。所以在我看來,我用過,
DateTime.Today.Add(StartTime).ToString("%h:mm tt")
「StartTime」是我的TimeSpan,它將其轉換爲DateTime並顯示它。現在我的時間顯示爲「3:00 PM」而不是「15:00」。 「%h」消除了1-9之間的前導零。
你有時間或UTC時間嗎?這並不合適。什麼是「ToString」並再次解析業務? – CodesInChaos