c#的强制性日期时间问题-确定UtcNow是否只在给定的时间范围内
本文关键字:时间 范围内 是否 确定 日期 强制性 问题 UtcNow | 更新日期: 2023-09-27 18:08:45
我有一个情况,我需要设置一个重复出现的时间跨度(在这个例子中,6 PM - 6 AM是时间跨度)
Date与此无关。假定为每天一张支票。
我在如何做到这一点上有困难,因为使用DateTime.UtcNow
确实给了我正确的时间,但它没有产生正确的日子。然而,使用DateTime.MinValue
不能得到当前时间。而且我无法手动设置日期。我已经探索了其他关于堆栈溢出的帖子,我只是误解了一些东西,我想…但这是我目前微不足道的代码…
var start = DateTime.MinValue.Date.Add(new TimeSpan(18, 0, 0));
var end = DateTime.MinValue.Date.Add(new TimeSpan(6, 0, 0));
var timezone = TimeZone.CurrentTimeZone.GetUtcOffset(start);
var now = DateTime.UtcNow;
now.Date = DateTime.MinValue;
// is right now greater than 6pm est?
Console.WriteLine(start.TimeOfDay < now);
Console.WriteLine(end < DateTime.UtcNow);
Console.WriteLine(start.ToShortTimeString());
Console.WriteLine(DateTime.UtcNow.TimeOfDay);
Console.WriteLine(timezone.ToString());
Console.ReadLine();
我不确定你想达到什么目的,但是对于支票来说,这样的东西不会为你做吗?
DateTime dt3 = DateTime.UtcNow;
if(dt3.Hour <= 6 || dt3.Hour >=18)//24 hr format
MessageBox.Show("6PM - 6AM range");// UTC will have only one time and should get satisfied irrespective of date
要检查它是否在午夜UTC和6AM UTC之间或6PM UTC和午夜UTC之间的第二天,你将不得不结合两个子句:
bool IsNowInTimeSpan = (DateTime.UtcNow >= DateTime.Date && DateTime.UtcNow <= DateTime.Date.AddHours(6)) ||
(DateTime.UtcNow >= DateTime.Date.AddHours(18) && DateTime.UtcNow <= DateTime.Date.AddDays(1));