DateTime

来源:互联网 发布:僵尸题材单机游戏知乎 编辑:程序博客网 时间:2024/05/22 05:23

描述:

假设银行利率为p%每年,你有a0元钱,希望得到a元,至少需要多久?设初始日期为2016-01-01,写一个方法,以”yyyy-mm-dd”的格式返回得到a的日期。

例如:

date_nb_days(100, 101, 0.98) –> “2017-01-01” (366 days)

date_nb_days(100, 150, 2.00) –> “2035-12-26” (7299 days)

注意:银行将360天视为一年,因此一天的利率应为p/36000

MyCode:

using System;using System.Linq;public class DateDays {    public static string DateNbDays(double a0, double a, double p)        {            int dayCount = 0;            int year = 2016;            int month = 1;            int[] bm = { 1,3,5,7,8,10,12 };            int[] sm = { 4,6,9,11 };            while (a0 < a)            {                a0 = a0 * (1 + p / 36000);                dayCount++;            }            while (dayCount >= 366)            {                dayCount = year % 4 == 0 ? dayCount - 366 : dayCount - 365;                year++;            }            while (dayCount >= 31)            {                if (month == 2 && year % 4 == 0) dayCount -= 29;                if (month == 2 && year % 4 != 0) dayCount -= 28;                if (bm.Contains(month)) dayCount -= 31;                if (sm.Contains(month)) dayCount -= 30;                month++;            }            int day = dayCount + 1;            string retMonth = month < 10 ? "0"+month.ToString() : month.ToString();            string retDay = day < 10 ? "0"+day.ToString() : day.ToString();            return String.Format("{0}-{1}-{2}",year.ToString(),retMonth,retDay);        }}

CodeWar:

using System;public class DateDays {      public static String DateNbDays(double a0, double a, double p)   {    DateTime Start = new DateTime(2016,1,1);    int days = 0;    double dayP = p / 36000;    while(a0 < a)    {      a0 *= (1 + dayP);      days++;    }    return Start.AddDays(days).ToString("yyyy-MM-dd");  }}
1 0
原创粉丝点击