C#格式化时代 - 关于日,周,月 - 年 [英] C# Formatting Age - Regarding Days, Weeks , Months - Years

查看:176
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆