簡體   English   中英

使一個日期比其他 C# 大

[英]make one date bigger than other c#

你好,我有這個條件:

if (DateTime.Now.Subtract(dateTimePicker_Doc_BirthDate.Value).Days/(365)<18)
{
    this.errorProvider1.SetError(this.dateTimePicker_Doc_BirthDate, "Atleast 18 years old");
    valid = false;
}

而且我想制作另一個包含此人畢業的內容並設置限制,即他畢業時必須至少年滿18歲。

我試過這個:但它不起作用

if (DateTime.Now.Subtract(dateTimePicker_Doc_Graduation.Value).Days / (365) < 18 + (18))
{
    this.errorProvider1.SetError(this.dateTimePicker_Doc_Graduation, "Atleast 18");
    valid = false;
}

這里的主要問題是閏年 29 Feb 2004出生的人什么時候18歲? 兩種可能的答案:

https://www.buzzfeed.com/lanesainty/leap-year-birthday-teenager-court-ruling

  1. 28 Feb 2022 (新西蘭駕照;見 xdtTransform 的評論)
  2. 1 Mar 2022 (澳大利亞)

在一個簡單的情況下,我們可以將18年添加到birthDate並查看18歲生日是在today之前還是之后。 對於29 February我們可能還需要增加1 day

 DateTime birthDate = dateTimePicker_Doc_BirthDate.Value.Date;
 DateTime today = DateTime.Today;
 // 0 for 28 Feb 2022; 1 for 1 Mar 2022 
 int leapPolicy = 1;

 if (birthDate.AddYears(18) <= today || // 18th birthday before today or today
     birthDate.Day == 29 &&   
     birthDate.Day == 2 && 
     birthDate.AddYears(18).AddDays(leapPolicy) == today) {

   // At least 18 years old
 } 

請注意,那一年不是365天,而是365.2425天(公歷),這就是為什么你不能把它當作...Days / 365...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM