如何将时间四舍五入到下一个半小时
本文关键字:下一个 半小时 四舍五入 时间 | 更新日期: 2023-09-27 18:23:58
我有一列包含HH:mm:ss PM/AM
格式的时间。我把同一时间四舍五入到下一个半小时。例如,如果时间是上午10:05:00
,那么舍入时间为11:30:00am
,如果10:55:00 am
则11: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