C#格式化时代 - 关于日,周,月 - 年 [英] C# Formatting Age - Regarding Days, Weeks , Months - Years
本文介绍了C#格式化时代 - 关于日,周,月 - 年的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我工作的一些医疗软件,我需要输出的所有年龄在一个非常特殊的方式,根据以下规则:
I am working on some medical software and I am required to output all ages in a very specific manner, based on the following rules:
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)
使用C#我想找到只用出生的人的日期,这样做的一个简单的方法,任何帮助将大大AP preciated。
Using C# I am trying to find a simple method of doing this just using a Person's Date of Birth, any help would be greatly appreciated.
推荐答案
我在做类似的事情昨天,但像这样的东西应该满足您的需求:(假设7天周31天的月,365天年等等。的)
I was working on something similar yesterday, but something like this should suit your needs: (assuming 7 day weeks, 31 day months, 365 day years etc.)
修订法: (固定为每Bob的建议)的
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");
}
previous方法:
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');
}
希望这有助于!
Hope this helps!
这篇关于C#格式化时代 - 关于日,周,月 - 年的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文