use*_*657 0 c# asp.net datetime int32
我有两个日期作为整数.如何在c#中找到这两个整数之间的月份差异?
例如:
Int32 beginDate= 20130307(yyyymmdd)
Int32 beginDate= 20140507(yyyymmdd)
Run Code Online (Sandbox Code Playgroud)
我需要14个月的结果.
我已经尝试过了:
DateTime beginDatepar = Convert.ToDateTime(beginDate);
DateTime endDatepar = Convert.ToDateTime(beginDate);
int monthDifference = ((beginDatepar.Year - endDatepar.Year) * 12) +
beginDatepar.Month - endDatepar.Month;
Run Code Online (Sandbox Code Playgroud)
但是当我将Int32转换为Datetime时,错误是"从'Int32'到'DateTime'的无效转换"
您可以使用我的Noda Time库.它是专门为使这样的事情更简单而创建的.
// TODO: Encapsulate this conversion in a separate method
LocalDate start = new LocalDate(beginDate / 10000,
(beginDate / 100) % 100,
beginDate % 100);
LocalDate end = new LocalDate(endDate / 10000,
(endDate / 100) % 100,
endDate % 100);
Period period = Period.Between(start, end, PeriodUnits.Months);
int months = period.Months;
Run Code Online (Sandbox Code Playgroud)
请注意,这将返回完整的月份-所以,如果你添加months到start,你会之前或等于得到一个数值end,但如果添加months + 1将严格之后end.
因此,例如,5月20日至7月10日也要算的一个月,而不是两个.
作为一个单独的问题,我强烈建议你首先停止将日期表示为这样的整数.追溯到代码首先执行此操作的位置,并修复它.
| 归档时间: |
|
| 查看次数: |
199 次 |
| 最近记录: |