如何序列化DateTime,秒显示为0?

时间:2014-07-15 15:22:58

标签: c# datetime

我有一些DateTime' s将以以下格式计算:dtDateTime.ToString("M/dd/yyyy h:mm:ss tt")我希望保持 ss格式,但只需将值设置为零。例如:

变更前:

"7/14/2014 7:34:27 AM"

变更后:

"7/14/2014 7:34:00 AM"

我尝试过:

dtDateTime = my DateTime
TimeSpan secondsDifference = dtDateTime.Subtract(new System.DateTime(0, 0, 0, 0, 0, dtDateTime.Second)
dtDateTime = dtDateTime.Date - secondsDifference;
return dtDateTime.ToString("M/dd/yyyy h:mm:ss tt")

这在dtDateTime.Subtract()表达式上给出了一个错误,因为这个日期是在1970年之前,当时(我认为)Unix时间戳开始了。如何简单地将seconds的{​​{1}}部分设置为dtDateTime

NB - 代码简洁很重要。谢谢大家。

4 个答案:

答案 0 :(得分:11)

如果目的是仅显示00秒,则只需将ss替换为00

dtDateTime.ToString("M/dd/yyyy h:mm:00 tt", CultureInfo.InvariantCulture)

答案 1 :(得分:8)

我还没试过,但将格式更改为" M / dd / yyyy h:mm:00 tt"应该工作。

答案 2 :(得分:8)

myDate = myDate.AddSeconds(-myDate.Second)

答案 3 :(得分:4)

您可以尝试以下方法:

// create a new datetime based on this you have
DateTime dt = new DateTime(inputDate.Year, 
                           inputDate.Month, 
                           inputDate.Day, 
                           inputDay.Hour, 
                           inputDay.Minute, 
                           0);


// print it to the console
Console.WriteLine(t.ToString("M/dd/yyyy h:mm:ss tt"));