重複の可能性:
誕生日から年齢を計算する
形式で TextBox から入力を取得して、年齢をどのように計算しますdd/MM/yyyy
か?
例えば
入力: txtDOB.Text 20/02/1989 (文字列形式)
出力: txtAge.Text 23
重複の可能性:
誕生日から年齢を計算する
形式で TextBox から入力を取得して、年齢をどのように計算しますdd/MM/yyyy
か?
例えば
入力: txtDOB.Text 20/02/1989 (文字列形式)
出力: txtAge.Text 23
( link )のSubstract
メソッドを使用してから、プロパティを使用して実際の年齢を判断できます。DateTime
Days
DateTime now = DateTime.Now;
DateTime givenDate = DateTime.Parse(input);
int days = now.Subtract(givenDate).Days
int age = Math.Floor(days / 365.24219)
コメントで既に述べたように、正しい答えはここにあります: C# で年齢を計算する
誕生日を DateTime として取得するだけです。
DateTime bday = DateTime.ParseExact("20/02/1989", "dd/MM/yyyy", CultureInfo.InvariantCulture);
生年月日を DateTime に解析すると、次のようになります。
static int AgeInYears(DateTime birthday, DateTime today)
{
return ((today.Year - birthday.Year) * 372 + (today.Month - birthday.Month) * 31 + (today.Day - birthday.Day)) / 372;
}
次のように日付を解析します。
DateTime dob = DateTime.ParseExact("20/02/1989", "dd/MM/yyyy", CultureInfo.InvariantCulture);
そしてサンプルプログラム:
using System;
namespace Demo
{
class Program
{
static void Main(string[] args)
{
DateTime dob = new DateTime(2010, 12, 30);
DateTime today = DateTime.Now;
int age = AgeInYears(dob, today);
Console.WriteLine(age); // Prints "1"
}
static int AgeInYears(DateTime birthday, DateTime today)
{
return ((today.Year - birthday.Year) * 372 + (today.Month - birthday.Month) * 31 + (today.Day - birthday.Day)) / 372;
}
}
}
この回答はループを使用するため最も効率的ではありませんが、365.25 マジック ナンバーの使用にも依存していません。
datetime
aから今日までの年数を返す関数:
public static int CalcYears(DateTime fromDate)
{
int years = 0;
DateTime toDate = DateTime.Now;
while (toDate.AddYears(-1) >= fromDate)
{
years++;
toDate = toDate.AddYears(-1);
}
return years;
}
使用法:
int age = CalcYears(DateTime.ParseExact(txtDateOfBirth.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture));
var date = DateTime.ParseExact("20/02/1989", "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);
var age = (DateTime.Today.Year - date.Year);
Console.WriteLine(age);
これを試して
string[] AgeVal=textbox.text.split('/');
string Year=AgeVal[2].tostring();
string CurrentYear= DateTime.Now.Date.Year.ToString();
int Age=Convert.ToInt16((Current))-Convert.ToInt16((Year));
2つの値を引き、年齢を取得します。