開始日と終了日がいつ指定されたか、2 つの日付の間の月と年を取得する方法を知りたいです。
例:Start Date: '1/1/2011'(mm/dd/yyyy)
とEnd date :'11/30/2011'
. 取得する月と年はJanuary,2011; February,2011; March,2011; and so on till November,2011
開始日と終了日がいつ指定されたか、2 つの日付の間の月と年を取得する方法を知りたいです。
例:Start Date: '1/1/2011'(mm/dd/yyyy)
とEnd date :'11/30/2011'
. 取得する月と年はJanuary,2011; February,2011; March,2011; and so on till November,2011
どうぞ
public static IEnumerable<(string Month, int Year)> MonthsBetween(
DateTime startDate,
DateTime endDate)
{
DateTime iterator;
DateTime limit;
if (endDate > startDate)
{
iterator = new DateTime(startDate.Year, startDate.Month, 1);
limit = endDate;
}
else
{
iterator = new DateTime(endDate.Year, endDate.Month, 1);
limit = startDate;
}
var dateTimeFormat = CultureInfo.CurrentCulture.DateTimeFormat;
while (iterator <= limit)
{
yield return (
dateTimeFormat.GetMonthName(iterator.Month),
iterator.Year
);
iterator = iterator.AddMonths(1);
}
}
そして明らかにあなたはそれをこのように呼びます
var startDate = DateTime.ParseExact("01/01/2011", "MM/dd/yyyy");
var endDate = DateTime.ParseExact("11/30/2011", "MM/dd/yyyy");
var months = MonthsBetween(startDate, endDate);
結果は次のようになります
{
{ "January", 2011 },
{ "February", 2011 },
{ "March", 2011 },
{ "April", 2011 },
{ "May", 2011 },
{ "June", 2011 },
{ "July", 2011 },
{ "August", 2011 },
{ "September", 2011 },
{ "October", 2011 },
{ "November", 2011 },
}
月の名前はあなたの文化に依存していますが、それはまさにあなたが求めていたものだと思いますよね?
開始日が終了日以下の while ループから始めることができます
その中で、開始日から関連する月と年の部分を引き出して保存し(おそらく具体的なクラスまたは a として)、次を使用して開始日を1か月増やしますAddMonths(1)
//something on these lines
while(startdate <= enddate)
{
// pull out month and year
startdate = startdate.AddMonths(1);
}
次の式を使用します。
((date1.Year - date2.Year) * 12) + date1.Month - date2.Month
そして、月数を取得します。
これを適切な方法で使用すると、クラックされます。
Stackoverflow へようこそ。ここでハードワークはあなたの役割であり、問題が発生したときに友愛が行うための考え方を示します。