我正在研究一些医疗软件,我需要根据以下规则以非常具体的方式输出所有年龄段:
If under 6 Weeks old : ###D (Number of Days) If under 6 Months old : ###W (Number of Weeks) If under 2 Years old : ###M (Number of Months) If above 2 Years old : ###Y (Number of Years)
解决方法
我昨天正在做类似的事情,但这样的事情应该适合你的需要:(假设7天,31天,365天等)
修订方法:(根据鲍勃的建议修正)
public static string ConvertAge(DateTime dob) { DateTime today = DateTime.Today; string fmt = "{0:0##}{1}"; //Greater than 2 Years old - Ouput Years if (dob <= today.AddYears(-2)) return string.Format(fmt,(dob.DayOfYear <= today.DayOfYear) ? (today.Year - dob.Year) : (today.Year - dob.Year)-1,"Y"); //Less than 2 Years - Output Months if (dob < today.AddMonths(-2)) return string.Format(fmt,(dob.DayOfYear <= today.DayOfYear) ? (today.Year - dob.Year) * 12 + (today.Month - dob.Month) : ((today.Year - dob.Year) * 12 + (today.Month - dob.Month))-1,"M"); //Less than 2 Months - Output Weeks if (dob < today.AddDays(-2 * 7)) return string.Format(fmt,(today - dob).Days / 7,"W"); //Less than 2 Weeks - Output Days return string.Format(fmt,(today - dob).Days,"D"); }
上一种方法:
public string ConvertAge(DateTime dateOfBirth) { int daysOld = (DateTime.Now - dateOfBirth).Days; //Age < 6 Weeks if (daysOld < (6 * 7)) return String.Format("{0:0##}{1}",daysOld,'D'); //Age < 6 Months else if (daysOld < (6 * 31)) return String.Format("{0:0##}{1}",daysOld/7,'W'); //Age < 2 Years else if (daysOld < (2 * 365)) return String.Format("{0:0##}{1}",daysOld / 31,'M'); //Age >= 2 Years else return String.Format("{0:0##}{1}",daysOld / 365,'Y'); }
希望这可以帮助!
原文地址:https://www.jb51.cc/csharp/99892.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。