gpt4 book ai didi

c# 给定日期之间的月份和年份

转载 作者:行者123 更新时间:2023-12-02 22:13:21 26 4
gpt4 key购买 nike

例如,我尝试弹出一个显示给定日期的月份和年份的消息框我的输入是:

7/2012 和 2/2013

输出应该是:

7/2012,8/2012,9/2012,10/2012,11/2012,12/2012,1/2013,2/2013

我写道:

    string datePart1;
string datePart2;
string[] date1 = new string[] { "" };
string[] date2 = new string[] { "" };

private void button1_Click(object sender, EventArgs e)
{
DateTime endDate = new DateTime(2013, 2, 1); // i will be having the date time as a variable from a textbox
DateTime begDate = new DateTime(2012, 7, 1); // i will be having the date time as a variable from a text box

int year, month;

if (endDate.Month - begDate.Month < 0)
{
month = (endDate.Month - begDate.Month) + 12;
endDate = new DateTime(endDate.Year - 1, endDate.Month, endDate.Day);
}
else
month = endDate.Month - begDate.Month;

year = endDate.Year - begDate.Year;

上面的代码计算了时间差,但是我尝试输出没有成功。

最佳答案

这是一个让您入门的示例。

它提供了一个方便的 MonthsInRange() 方法,该方法返回指定范围内所有月份的序列。然后,您可以使用“M\\/yyyy”(见下文)格式化返回的日期以输出所需的格式。 (注意:这不是字母 V,它是一个反斜杠后跟一个正斜杠!)

参见 Custom Date and Time Format Strings格式字符串的解释。

using System;
using System.Collections.Generic;

namespace Demo
{
public static class Program
{
static void Main(string[] args)
{
DateTime endDate = new DateTime(2013, 2, 1);
DateTime begDate = new DateTime(2012, 7, 1);

foreach (DateTime date in MonthsInRange(begDate, endDate))
{
Console.WriteLine(date.ToString("M\\/yyyy"));
}
}

public static IEnumerable<DateTime> MonthsInRange(DateTime start, DateTime end)
{
for (DateTime date = start; date <= end; date = date.AddMonths(1))
{
yield return date;
}
}
}
}

为什么是“M\\/yyyy”而不只是“M/yyyy”?

这是因为 DateTime 格式字符串中的“/”字符将被解释为“日期分隔符”,而不是文字“/”。在某些地区,这将显示为“.”。而不是“/”。

要解决这个问题,我们需要使用“\”字符对其进行转义。但是,我们不能只使用单个“\”,因为 C# 本身会将其解释为转义字符,并将使用它来转义后面的字符。文字“\”的 C# 转义序列是“\\”,这就是我们必须放置“\\/”而不仅仅是“\/”的原因。

或者,您可以通过在字符串前加上 @ 字符来转义“\”字符,如下所示:

@"M/yyyy"

您可以使用任何您喜欢的。

关于c# 给定日期之间的月份和年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14878859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com