我正在使用c#DateTime,我需要以24小时格式获取.Hour属性

时间:2019-11-27 12:19:46

标签: c# asp.net-core asp.net-web-api

检查小时的If语句总是有问题,因为我的数据库返回24小时格式,当12pm <= 1pm时返回false。 这是代码:

public void SkippedDailyTask()
        {
            var pendingtasks = GetPendingTasks();
            if (pendingtasks.Count() == 0)
            {
                Console.WriteLine("Empty List");
            }
            else
            {
                foreach (var item in pendingtasks)
                {
                    if (item.EndTime.Hour <= DateTime.Now.Hour)
                    {
                        if (item.EndTime.Minute <= DateTime.Now.Minute)
                        {
                            item.StatusReturner = StatusReturner.Skipped;
                        }
                        else
                        {
                            Console.WriteLine("Empty List");
                        }
                        context.SaveChanges();
                    }

                }

            }
        }

2 个答案:

答案 0 :(得分:-1)

DateTime.Hour始终以24小时格式返回小时值作为整数。选中https://docs.microsoft.com/en-us/dotnet/api/system.datetime.hour?view=netframework-4.8

因此,如果您的item.EndTime.Hour在下午12:00返回12,而当前时间是下午1:00,则if (item.EndTime.Hour <= DateTime.Now.Hour)条件应返回true,因为DateTime.Now.Hour等于13。

此外,与您的问题无关,但您正在使用pendingTasks检查pendingtasks.Count()的计数。在C#中,length/count的可迭代对象被实现为属性而不是方法。

答案 1 :(得分:-3)

public void SkippedDailyTask()
{
    var pendingtasks = GetPendingTasks();
    if (pendingtasks.Count() == 0)
    {
        Console.WriteLine("Empty List");
    }
    else
    {
        foreach (var item in pendingtasks)
        {
            var hourNow = Convert.ToInt32(DateTime.Now.ToString("HH"));
            // var hourItem = item.EndTime.Hour;
            var hourItem = Convert.ToInt32(item.EndTime.ToString("HH"));
            if (hourItem <= hourNow)
            {
                if (item.EndTime.Minute <= DateTime.Now.Minute)
                {
                    item.StatusReturner = StatusReturner.Skipped;
                }
                else
                {
                    Console.WriteLine("Empty List");
                }
                context.SaveChanges();
            }

        }

    }
}