【问题标题】:Display Time variable as am/pm将时间变量显示为 am/pm
【发布时间】:2012-08-07 07:37:54
【问题描述】:

我有数据类型为Time 的数据库列(例如:08:00:00.0000000)

我正在读取程序中的值并将其移动到声明如下的变量中

public string vartime{get;set;}

在程序中读取数据时,它是有价值的。

((TimeSpan)(dr["dates"])).ToString()    "08:00:00"  string

我需要在网格中将此值显示为08:00 am。此外,值16:00:00.0000000 应显示为04:00 pm。

在提供vartime=((TimeSpan)(dr["dates"])).ToString("hh:mm tt") 时,由于输入格式不正确,它给了我一个错误。

请告诉我如何格式化 Time 变量以使用 am/pm 显示。

【问题讨论】:

标签: asp.net sql-server-2008 c#-4.0


【解决方案1】:

在 sql server 中你可以这样做:

  declare @time datetime='16:00:00';
  SELECT substring(convert(varchar(20), @time, 9), 13, 5) 
        + ' ' + substring(convert(varchar(30), @time, 9), 25, 2)

结果

 4:00 PM

【讨论】:

  • 感谢您的回答。我尝试类似于上面给出的链接,但我收到错误,因为“输入字符串格式不正确”。是因为数据类型是“时间跨度”吗?
  • @Soumya:是的,数据类型应该是日期时间才能使上述函数工作
  • 所以这一行给出错误,因为数据类型是时间跨度?vartime=((TimeSpan)(dr["dates"])).ToString("hh:mm tt")
【解决方案2】:

您可以通过将时间跨度添加到日期时间来做到这一点,

    TimeSpan timespan = new TimeSpan(03,00,00);
    DateTime time = DateTime.Today.Add(timespan);
    string displayTime = time.ToString("hh:mm tt");

您可以直接传递时间跨度变量,而不是 03,00,00

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 2011-12-29
    • 2022-01-19
    相关资源
    最近更新 更多