如何将时间四舍五入到下一个半小时

本文关键字:下一个 半小时 四舍五入 时间 | 更新日期: 2023-09-27 18:23:58

我有一列包含HH:mm:ss PM/AM格式的时间。我把同一时间四舍五入到下一个半小时。例如,如果时间是上午10:05:00,那么舍入时间为11:30:00am,如果10:55:00 am11:30:00 am(大约到下一个半小时(。

如何将时间四舍五入到下一个半小时

DateTime src = ...;
var target = new DateTime(src.Year, src.Month, src.Day, src.Hour, 0, 0)
                .AddHours(1.5);
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);

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

如果我从这句话中理解正确,我会假设你有一个DateTime,并且你得到它的字符串表示形式,你的列hh:mm:ss tt格式。

如果是这样,您可以先将其解析为DateTime,检查它的分钟数是否0,如果是,则添加30分钟,如果不是,则将其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和/或AddHours过程中执行此操作,然后在列中显示其文本表示形式。

这应该适合您

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