我看到这个问题已经解决了Java,JavaScript和PHP,但不是C#.那么,如何计算C#中两个日期之间的天数呢?
我有一个有2个日期属性的类:FirstDay和LastDay. LastDay是可以为空的.我想以格式生成一个字符串"x year(s) y day(s)".如果总年数小于1,我想省略年份部分.如果总天数小于1,我想省略日期部分.如果年份或天数为0,则应分别说"天/年",而不是"天/年".
示例:
2.2年:"2年73天"
1.002738年:"1年1
天"0.
2年:" 73天" 2年:"2年"
我有什么作品,但它很长:
private const decimal DaysInAYear = 365.242M;
public string LengthInYearsAndDays
{
get
{
var lastDay = this.LastDay ?? DateTime.Today;
var lengthValue = lastDay - this.FirstDay;
var builder = new StringBuilder();
var totalDays = (decimal)lengthValue.TotalDays;
var totalYears = totalDays / DaysInAYear;
var years = (int)Math.Floor(totalYears);
totalDays -= (years * DaysInAYear);
var days = (int)Math.Floor(totalDays);
Func<int, string> sIfPlural = value =>
value > …Run Code Online (Sandbox Code Playgroud) 我想计算出生日期的人的年龄和相对于当前日期的年,月和日的当前日期.
例如:
>>> calculate_age(2008, 01, 01)
1 years, 0 months, 16 days
Run Code Online (Sandbox Code Playgroud)
任何指向算法的指针都将受到赞赏.
假设我有678天,如何计算从那一刻起有多少年,几个月和几天?
Duration duration = Duration.FromStandardDays(678);
Instant now = SystemClock.Instance.Now;
Instant future = now + duration;
// I have to convert NodaTime.Instant to NodaTime.LocalDate but don't know how
Period period = Period.Between(now, future);
Console.WriteLine("{0} years, {1} months, {2} days", period.Years, period.Months, period.Days);
Run Code Online (Sandbox Code Playgroud)