如何将时间跨度转换为pm或am time?
我将用户时间存储在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返回DateTime
编辑:
包括CultureInfo
var time = DateTime.ParseExact("17:00", "HH:mm", null).ToString("hh:mm tt", CultureInfo.GetCultureInfo("en-US"));
TimeSpan的持续时间为“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();
只有在您显示它时才会包含AM / PM,例如:
dtLocal.ToString("h:mm tt");
我只需要用我的TimeSpan显示静态html。 所以在我看来,我用过,
DateTime.Today.Add(StartTime).ToString("%h:mm tt")
“StartTime”是我的TimeSpan,它将其转换为DateTime然后显示它。 我的时间现在显示为“下午3:00”而不是“15:00”。 “%h”消除了1-9之间的前导零。