【问题标题】:Only Show Time From DateTime仅显示 DateTime 的时间
【发布时间】:2017-01-11 23:52:48
【问题描述】:

我的DateTime 字段根据需要进行了格式化,但我遇到的问题是我无法找到 显示该字段的Time 元素的方法。

这是我使用的语法

DateTime? fmtTimeOfDeparture;
string TimeOfDeparture = null;

IFormatProvider format = System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat;
fmtTimeOfDeparture = DateTime.ParseExact((TimeOfDeparture != null ? TimeOfDeparture : null), "HHmmss", format);

Console.WriteLine(fmtTimeOfDeparture);

这会将其写入控制台:

01/11/2017 6:49:00 PM

希望它显示

6:49:00 PM

应如何更新语法以仅显示此内容?

【问题讨论】:

  • 那么就这样做吧:Console.WriteLine(fmtTimeOfDeparture.ToString("h:mm:ss tt"));。请参阅this link 了解更多信息。
  • 我会尝试“fmtTimeOfDeparture.Value.ToShortTimeString()”,这是我通过搜索这个问题找到的答案。
  • @Icemanind - 产生参数 1 的错误:无法从 'string' 转换为 'System.IFormatProvider'
  • @JamesJayson - 产生“字符串”错误不包含“值”的定义,并且找不到接受“字符串”类型的第一个参数的扩展方法“值”
  • @MichaelMormon 抱歉,没有注意到它可以为空。试试这个:Console.WriteLine(fmtTimeOfDeparture.Value.ToString("h:mm:ss tt"));.

标签: c# datetime time


【解决方案1】:

您需要另一种格式来将日期时间转换为字符串

DateTime? fmtTimeOfDeparture;
string TimeOfDeparture = "01/11/2017 6:49:00 PM";

IFormatProvider format = System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat;
fmtTimeOfDeparture = DateTime.ParseExact((TimeOfDeparture ?? DateTme.Now.ToString()), "dd/mm/yyyy hh:mm:ss tt", format);

Console.WriteLine($"{fmtTimeOfDeparture:h:mm:ss tt}");

【讨论】:

  • 那还是写日期元素。
  • @MichaelMormon 你确定吗?顺便说一句,为什么你的字符串为空?
  • 它从 API 读取 - 并将变量设置为等于 API 中的值,因此它可能为 null
  • 如果字符串为空,你想用什么代替?我把 Datetime.Now.... 看到operatpr ?? 将分配 Datetime.Now.ToString 如果你的字符串是空的。
【解决方案2】:

如果时间格式不适合您,请尝试使用 string.trim 删除替代解决方案的日期

【讨论】:

    【解决方案3】:
    DateTime? fmtTimeOfDeparture = DateTime.Now;
    Console.WriteLine(fmtTimeOfDeparture.HasValue ? fmtTimeOfDeparture.Value.ToString("HH:mm:ss tt") : "");
    

    【讨论】:

      【解决方案4】:

      如果要以6:49:00 PM 的格式编写,为什么需要IFormatProvider

      你只需要这个:

      DateTime? fmtTimeOfDeparture;
      
      if( fmtTimeOfDeparture.HasValue ) {
         Console.WriteLine( fmtTimeOfDeparture.Value.ToString( "h:mm:ss tt" ) );
      }
      

      显然它不会写任何东西,因为fmtTimeOfDeparture 是空的。

      【讨论】:

        猜你喜欢
        • 2012-02-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-26
        • 2015-05-30
        • 1970-01-01
        • 1970-01-01
        • 2016-06-07
        • 1970-01-01
        相关资源
        最近更新 更多