如何从DateTime.Now将时间转换为24Hr格式

时间:2018-01-21 06:31:32

标签: c#

这是我的代码,关于最后一行陈述

的错误
  

“无法将类型'string'隐式转换为'System.TimeSpan'

//Getting the current date and time
DateTime dateTime = DateTime.Now;
//Date
var date = dateTime.Date;
//Time
var time = dateTime.TimeOfDay;
time = time.ToString("HH:mm");

3 个答案:

答案 0 :(得分:3)

在代码的第三行中,您使用var声明了名为time(var time = dateTime.TimeOfDay;)的变量。

  

Var.此关键字以隐式方式引用类型。它别名任何类型。别名类型由C#编译器确定。这没有性能损失。

因此,变量时间的数据类型是TimeSpan,因为TimeOfDay()方法返回TimeSpan,然后在下一行中,您尝试使用类型安全的语言(如C#返回错误。 你应该简单地声明另一个值:

//Getting the current date and time
DateTime dateTime = DateTime.Now;
//Date
var date = dateTime.Date;
//Time
var time = dateTime.TimeOfDay;
var timeOfDayStr = time.ToString("HH:mm");

如果你想以24小时格式获得时间,你应该这样做:

var TimeIn24HrFormat = DateTime.Now.ToString("HH:mm");

答案 1 :(得分:1)

对于小时和分钟,你可以做到:

String.Format("{0:HH:mm}", DateTime.Now)

类似地: 如果你想要完整的格式:

String.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now)

答案 2 :(得分:1)

您的时间变量是Timespan类型,但您正在尝试为其分配字符串。 C#是一种静态类型语言,因此变量在运行时不能更改类型。只需为您的时间字符串创建一个新变量:

var time = dateTime.TimeOfDay;
var time24hr = time.ToString("HH:mm");