如何将时间轮到下一个半小时?

时间:2015-11-23 08:42:36

标签: c# datetime

我有一列包含HH:mm:ss PM/AM格式的时间。我要把同一时间整理到下一个半小时。例如,如果时间是10:05:00上午,则结束时间为11:30:00am,如果是10:55:00 am,则为11:30:00 am(大约下一个小时和一半)。

3 个答案:

答案 0 :(得分:1)

string yourstring = "10:05:00 am";
DateTime date1 = DateTime.Parse(yourstring);
if (date1.Minute > 0)
    date1 = date1.AddMinutes(-date1.Minute);
if (date1.Second > 0)
    date1 = date1.AddSeconds(-date1.Second);
date1 = date1.AddMinutes(90);
Console.WriteLine(date1);

答案 1 :(得分:0)

这应该对你有用

var dateTime = DateTime.Now; //your original DateTime value
var result = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day,
                          dateTime.Hour + 1, 30, dateTime.Second, dateTime.Kind);

下一小时的小时(+1)
分钟到30

答案 2 :(得分:-1)

  

我有一列包含HH时间:mm:ss PM / Am格式

如果我从该句中正确理解,我会假设您有DateTime,并且您获得了hh:mm:ss tt格式的列的字符串表示形式。

如果是这样,您可以先将其解析为DateTime,检查其分钟是0,如果是,请添加30分钟,如果不是,则将其设为零{{1} } part并添加Minute小时。

1.5

但是,当然,既然您已经已经 string s = "10:00:00 am"; DateTime dt; if(DateTime.TryParseExact(s, "hh:mm:ss tt", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt)) { if(dt.Minute != 0) dt.AddMinutes(-dt.Minute).AddHours(1.5).ToString("hh:mm:ss tt", CultureInfo.InvariantCulture); else dt.AddMinutes(30).ToString("hh:mm:ss tt", CultureInfo.InvariantCulture); } 个实例,请首先执行此Datetime和/或AddMinutes进程 然后在列中显示它的文本表示。