簡體   English   中英

給定字符串輸入,如何在 C# 中計算年齡?

[英]Given string input, how do I calculate age in C#?

我想計算一個人現在的年齡。 出生日期 (DOB) 數據是使用TextBox輸入的,我的數據庫將 DOB 存儲為 varchar。

如何從這個出生日期找到當前年齡?

在這里您需要做很多事情。 首先,您需要一種方法來解析存儲在數據庫中的日期,該日期最初是由用戶手動輸入的。 這是一項艱巨的任務,因為用戶幾乎可以輸入任何內容。

DateTime.Parse() ,處理你會得到的所有錯誤,是的,你會得到錯誤。 例如,您如何知道“09/10/11”是什么意思? 這是美國約會還是英國約會?

一種可能性是從TextBox切換到某種形式的MaskedTextBox以強制用戶始終以相同格式輸入日期,並將日期正確存儲為數據庫中的真實日期。

獲得正確的DateTime值后,您可以使用簡單的減法來獲得此人的年齡,但您返回的TimeSpan值並不完全有用,因為我假設您需要輸出該人的整年年齡。

// Assuming dateOfBirth is a DateTime value
TimeSpan age = DateTime.Today - dateOfBirth;

這里的age變量保存了從出生日期到今天所經過的時間。 鑒於年份的長度不同,這不是最佳選擇。 我會做這樣的事情:

DateTime today = DateTime.Today;
int years = today.Year - dateOfBirth.Year;
if (dateOfBirth.Month > today.Month) {
    --years;
}
else if (dateOfBirth.Month == today.Month && dateOfBirth.Day > today.Day) {
    --years;
}
// TODO: Output the years variable.

如果日期始終采用相同的格式,您可以使用DateTime.TryParseExact() - 但是這里似乎並非如此。

也許這個庫對你有幫助,作者有同樣的問題: http : //www.codeproject.com/Articles/33298/C-Date-Time-Parser

盡管可以解析每種格式,但這並不能保證。

您可以將DOB string into DateTime object ,然后可以計算年齡:)

DateTime dateDOB = DateTime.Parse(txt_dob.Text);

int now = int.Parse(DateTime.Today.ToString("yyyyMMdd"));

int dob = int.Parse(dateDOB.ToString("yyyyMMdd"));

string dif = (now - dob).ToString();

字符串年齡=“0”;

如果(差異長度 > 4)

年齡 = dif.Substring(0, dif.Length - 4);

txt_age.Text = age.ToString();

暫無
暫無

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

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