我以UTC时间存储用户时间,当我显示时,我需要将其转换为上午时间。
以下是我在17:00:00转换为下午5:00的数据库中的示例
这是我到目前为止所提出的代码,但它不起作用
var time = DateTime.ParseExact(object.Time.ToString(), "HHmm", CultureInfo.CurrentCulture).ToString("hh:mm tt");
答案 0 :(得分:11)
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"));
答案 1 :(得分:7)
TimeSpan的持续时间为“17小时”,而不是时间。也许将其添加到日期(仅限)并使用现有的日期时间格式选项? (虽然注意夏令时)
即。
string s = DateTime.Today.Add(duration).ToString(specifier);
答案 2 :(得分:3)
不要忘记指定适当的文化,例如:CultureInfo.InvariantCulture
。
var time = DateTime.Now.ToString("h:mm tt", CultureInfo.InvariantCulture);
答案 3 :(得分:2)
根据您的评论,首先将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");
答案 4 :(得分:0)
我只需要使用TimeSpan显示静态html。所以在我看来,我用过,
DateTime.Today.Add(StartTime).ToString("%h:mm tt")
"开始时间"是我的TimeSpan,它将它转换为DateTime然后显示它。我的时间现在显示为" 3:00 PM"而不是" 15:00"。 "%h"消除1-9之间的前导零。