[英]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.