我的时间是16:23:01.我试着用DateTime.ParseExact,但不起作用.

以下是我的代码:

string Time = "16:23:01"; 
DateTime date = DateTime.ParseExact(Time, "hh:mm:ss tt", System.Globalization.CultureInfo.CurrentCulture);

lblClock.Text = date.ToString();

我希望它在标签上显示为下午4:23:01.

推荐答案

"16:23:01"与"hh:mm:ss tt"的模式不匹配——它没有am/pm指示器,16显然不在12小时时钟中.在parsing部分中指定了该格式,因此需要匹配现有数据的格式.你想要:

DateTime dateTime = DateTime.ParseExact(time, "HH:mm:ss",
                                        CultureInfo.InvariantCulture);

(请注意不变区域性,not是当前区域性-假设您的输入确实总是使用冒号.)

如果你想把它变成hh:mm:ss tt,那么你需要把这部分放到ToString通话中:

lblClock.Text = date.ToString("hh:mm:ss tt", CultureInfo.CurrentCulture);

或者更好的做法是(IMO)使用"无论文化的长期模式是什么":

lblClock.Text = date.ToString("T", CultureInfo.CurrentCulture);

还要注意,hh是不寻常的;通常情况下,对于小于10的数字,要用0左键填充数字.

(还可以考虑使用我的Noda TimeAPI,它的类型是LocalTime-对于"一天中的某个时间"来说,这是一个更合适的匹配.)

Asp.net相关问答推荐

由于 Blazor Change Detection API,组件重新渲染被跳过.如何避免?

HttpRuntime.Cache[] 与 Application[]

IIS Request.UserHostAddress 返回 IPV6 (::1),即使禁用了 IPV6

异步编程与线程有什么不同?

如何使用 ASP.NET Identity 创建用户并获取新创建的 ID

用于链接字符串中的 url 的 C# 代码

如何计算/查找给定日期的周数?

如何在 ASP.NET core rc2 中禁用浏览器缓存?

ASP.NET Core 中的授权. [Authorize] 属性总是 401 Unauthorized

没有回发的按钮?

ASP.NET 日期时间 Select 器

如何解决 Kerberos 双跳问题?

Page.IsValid 是如何工作的?

ASP.NET IIS Web.config [内部服务器错误]

如何判断用户代理是 ipad 还是 iphone?

要调用此方法,Membership.Provider属性必须是ExtendedMembershipProvider的实例

ASP.NET 应用程序状态与静态对象

在c#中显示带有换行符的标签文本

Visual Studio 2013 ASP.NET 项目中 Antlr 包的用途是什么?

如何检索 X509Store 中的所有证书