【问题标题】:C# Check given date and timeC# 检查给定的日期和时间
【发布时间】:2017-06-17 23:08:01
【问题描述】:

大家好。我是 C# 新手,但我似乎无法理解 DateTime 是如何工作的。 我想做的就是检查如果 (givenday) = 今天并且时间是晚上 7 点,我想返回 true。这是正确的做法吗?

注意ActionDate是用户输入的字段。

DateTime dateA = Convert.ToDateTime(ActionDate);

int a = dateA.Year;
int b = dateA.Month;
int c = dateA.Day;
int d = timeA.Hour;
int e = timeA.Minute;

var newDate = new DateTime(a, b, c, d, e, 0);

DateTime end = Convert.ToDateTime(newDate);
DateTime start = Convert.ToDateTime(A);

TimeSpan span = end.Subtract(start);
Decimal minutes = Convert.ToDecimal(span.TotalMinutes);

if 
{
return true;
} else
{
return false;
}

提前谢谢你。

【问题讨论】:

  • 为什么要将 DateTime 转换为 DateTime?
  • 假设ActionDate 已经是DateTime,这就是你所需要的:return ActionDate.Date == DateTime.Today && ActionDate.Hour == 19;。如果你想包括分钟添加&& ActionDate.Minutes == 0
  • 我完全不确定先生。只是看到这个 stackoverflow 答案,所以我也尝试一下。
  • 它工作哈哈感谢蒂姆接受了你的评论和尼诺。谢谢大家

标签: c#


【解决方案1】:

检查给定日期是否是今天和晚上 7 点的方法是使用DateTime.Now

请注意,19 是晚上 7 点,7 是早上 7 点,Hour 属性使用 24 小时格式。

bool IsCurrentDayAnd7(DateTime dt) => dt.Date == DateTime.Now.Date && dt.Hour == 19;

正如@TimSchmelter 所说,您可以使用DateTime.Today

bool IsCurrentDayAnd7(DateTime dt) => dt.Date == DateTime.Today && dt.Hour == 19;

【讨论】:

  • 你可以用DateTime.Now.Date代替DateTime.Today
【解决方案2】:

您可以使用Date 属性将日期与当前日期进行比较。

if (newDate.Date == DateTime.Now.Date && newDate.Hour == 19)
{
 return true;
}

【讨论】:

  • 你可以用DateTime.Now.Date代替DateTime.Today
  • @TimSchmelter 任何性能影响或显着差异 b/w 两个?
  • 当然,NowDate 需要进行计算并创建DateTime 的新实例。但除此之外,它更具可读性,因为您想与 Today 进行比较
  • @Tim DateTime.Today 包括小时、分钟和秒,而 Date 的这些值为 0
  • @TimSchmelter 我同意。感谢您提供信息。
【解决方案3】:

你的代码有点太复杂了。首先,将该用户输入转换为日期,并将其与当前日期和时间相匹配。

DateTime dateA = Convert.ToDateTime(ActionDate);
if (dateA.Date == DateTime.Today && dateA.Hour == 19)
{
    //it is current date and hour is 7pm
}

或者,检查用户的输入是否正常,如下所示:

DateTime dateA;
if (!DateTime.TryParse(ActionDate, out dateA))
{
   //alert user that he's entered wrong date 
}

编辑: 正如 Tim Schmelter 所说,使用 DateTime.Today 而不是 DateTime.Now.Date 代码更具可读性

【讨论】:

  • 你可以用DateTime.Today代替DateTime.Now.Date
  • 如果我想把它改成晚上 7 点,我只能把它改成 19 点吗?还是 1900 年?
  • 19.我已经编辑了代码。如果你也想查看分钟,你可以这样做:if (dateA.Date == DateTime.Now.Date && dateA.Hour == 19 && dateA.Minute == 0)
  • 如果要查看 Hour 属性的范围,最简单的方法就是将光标放在上面,按 F1,MSDN 相当全面。
猜你喜欢
  • 2018-07-26
  • 2012-04-27
  • 1970-01-01
  • 1970-01-01
  • 2012-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
相关资源
最近更新 更多