我有一個字段返回年份和月份值。例如,20119(2011年是9年,9月是9月)。我怎麼能比較這與當前的一年和一個月來獲得幾個月的差異?例如,在同一個格式的當前年份和月份是20135,所以我要尋找的值是20。20135零下20個月將是20119.不知道如何構建公式動態計算以月爲單位的區別也許使用日期函數。以月計算日期差異
以月計算日期差異
回答
試試這個
DateTime x1 = DateTime.ParseExact("20119", "yyyyM", CultureInfo.InvariantCulture);
DateTime x2 = DateTime.ParseExact("20135", "yyyyM", CultureInfo.InvariantCulture);
int months = Math.Abs((x2.Month - x1.Month) + 12 * (x2.Year - x1.Year));
這是從溶液中的代碼片段貼在MSDN(link):
DateTime oldDate = new DateTime(2002,7,15);
DateTime newDate = DateTime.Now;
// Difference in days, hours, and minutes.
TimeSpan ts = newDate - oldDate;
// Difference in days.
int differenceInDays = ts.Days;
應年/月工作,以及(類似如下):
int differenceInMonths = (ts.Years *12 + ts.Months);
希望這會有所幫助。 Rgds,AB
我不認爲你可以從時間上直接得到幾個月 – Greg 2013-05-08 01:50:59
@Greg:謝謝你的意見。我已經爲這個特殊情況添加了關於TimeSpan對象使用情況的說明。 – 2013-05-08 02:12:12
你基本上可以拆分字符串。
int a = 201410;
int b= 20139;
int year1 = int.Parse(a.ToString().Substring(0,4));
int year2 = int.Parse(b.ToString().Substring(0,4));
int month1 = int.Parse(a.ToString().Substring(4));
int month2 = int.Parse(b.ToString().Substring(4));
//now construct a date for each
DateTime date1 = new DateTime(year1, month1, 1);
DateTime date2 = new DateTime(year2, month2, 1);
//then subtract them and make it months
int numberOfMonths = ((date1.Year - date2.Year) * 12) + date1.Month - date2.Month;
首先我假設你的問題:
- 單日個月內將有個位數
- 年+月的值是一個字符串(如果它是一個int,拋一個ToString()在下面代碼中的值)
因此,您的值將是5-6位數字的長度。通過使用獲得Date.Now
我們可以得到當前的日期只能作爲當月同比:我會添加額外的代碼,使這個更加清晰 - 你可以在更短的行執行下面的代碼,但原諒我冗長的答案
// Just want the month/year
DateTime currentDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
現在我們可以爲你要測試的使用方法子本年度/月(記住我的假設,我們正在處理一個字符串值,並且轉換的ToString()如果不是)日期。
// breaking out test date to year/month portions and saving as a new date time
string testDateValue = "20119";
int testDateYear = Convert.ToInt32(testDateValue.Substring(0, 4));
int testDateMonth = Convert.ToInt32(testDateValue.Substring(4));
DateTime testDate = new DateTime(testDateYear, testDateMonth, 1);
現在讓我們得到的區別:
// get month dif - remove abs() if want negative if test date in future
int numberOfMonths = Math.Abs(((currentDate.Year - testDate.Year) * 12) +
(currentDate.Month - testDate.Month));
現在 - 如果你想2天比較在yyyym格式,而不是使用當前的日期,只是年/月轉換上面再上市對此執行month dif公式。
您可以使用類則DateDiff從Time Period Library for .NET類,計算個月:
// ----------------------------------------------------------------------
public void CalcMonths(DateTime epoch)
{
DateDiff dateDiff = new DateDiff(DateTime.Now, epoch);
Console.WriteLine("{0} months", dateDiff.Months);
// > 1 Year 4 Months 12 Days 12 Hours ago
} // CalcMonths
- 1. 差異日期計算
- 2. 計算日期差異
- 3. 計算日期差異XSL
- 4. 兩個日期之間的月份差異計算lastdate月
- 5. 以月爲單位的日期差異
- 6. 使用Groovy計算兩個日期之間的月差異
- 7. 帶月份差異的JavaScript日期計算
- 8. 計算一個月份的日期和日期之間的PHP差異
- 9. php日期差異和整數計算
- 10. 計算時間和日期差異
- 11. 計算日期差異在Postgresql中
- 12. 計算日期之間的差異 - Postgres
- 13. 計算R中組的日期差異
- 14. C計算日期之間的差異
- 15. 日期計算差異(JavaScript VS .NET)
- 16. 日期計算的差異Java SimpleDateFormat
- 17. 計算和顯示日期的差異
- 18. Java中的日期差異計算
- 19. 在jQuery中計算日期差異
- 20. 計算java時出錯日期差異
- 21. 計算循環中的日期差異
- 22. VB 2010:如何計算日期差異?
- 23. 計算POSIXct列的日期差異(BUG?)
- 24. 計算Java中的日期差異
- 25. 預計月份和日期的日期差異?
- 26. 日期年月計算
- 27. 如何計算Javascript中兩個日期之間的年,月和日差異?
- 28. Perl:計算日期差異和平均日期
- 29. jQuery的日期選擇器+日期差異計算
- 30. 計算日期和當前日期之間的差異
你嘗試過這麼遠嗎?如果你還沒有嘗試過任何東西,看看DateTime對象的[AddMonths(http://msdn.microsoft.com/en-us/library/system.datetime.addmonths.aspx)方法。 – 2013-05-08 01:42:52