栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何获得年/月/周/日中两个日期之间的差异?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何获得年/月/周/日中两个日期之间的差异?

这实际上很棘手。总天数不同可以得到相同的结果。例如:

  • 2008年6月19日至2010年6月19日= 2年,但也为365 * 2天

  • 2006年6月19日至2008年6月19日= 2年,但由于leap年也需要365 + 366天

您可能要减去几年,直到到达两个相距不到一年的日期为止。然后减去数月,直到达到两个相距不到一个月的日期为止。

进一步的混乱:如果您可能以“ 3月30日”作为开始日期,那么减去(或增加)月份会很棘手-比那早一个月?

更进一步的混乱( 可能 无关紧要):甚至一天也不总是24小时。夏令时有人吗?

更进一步的混乱(几乎可以肯定是 相关的):一分钟并不总是60秒。ap秒令人非常困惑…

我现在没有时间来确定执行此操作的正确方法-这个答案主要是为了提出一个事实,即它听起来并不简单。

编辑:不幸的是,我将没有足够的时间来完全回答这个问题。我建议您从定义代表的结构开始

Period

public struct Period{    private readonly int days;    public int Days { get { return days; } }    private readonly int months;    public int Months { get { return months; } }    private readonly int years;    public int Years { get { return years; } }    public Period(int years, int months, int days)    {        this.years = years;        this.months = months;        this.days = days;    }    public Period WithDays(int newDays)    {        return new Period(years, months, newDays);    }    public Period WithMonths(int newMonths)    {        return new Period(years, newMonths, days);    }    public Period WithYears(int newYears)    {        return new Period(newYears, months, days);    }    public static DateTime operator +(DateTime date, Period period)    {        // TODO: Implement this!    }    public static Period Difference(DateTime first, DateTime second)    {        // TODO: Implement this!    }}

我建议您首先实现+运算符,该运算符应告知

Difference
方法-您应确保
first + (Period.Difference(first,second)) == second
所有
first
/
second
值都使用该运算符。

首先编写大量的单元测试-
最初是“简单”的案例,然后再进行涉及leap年的棘手案例。我知道通常的方法是一次编写一个测试,但是在您开始执行任何实现工作之前,我个人都会进行头脑风暴。

给自己一天时间来正确实施此操作。这是棘手的东西。

请注意,我在这里省略了几周-至少很容易获得该值,因为它总是7天。因此,给定一个(正)期间,您将拥有:

int years = period.Years;int months = period.Months;int weeks = period.Days / 7;int daysWithinWeek = period.Days % 7;

(我建议您甚至不要考虑消极的时期-确保所有时间都是积极的。)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/421490.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号