EndDate问题 - 上个月

时间:2017-12-04 10:49:55

标签: c# datetime zend-date netapp

我有一个.netapp应用程序(C#),用于从API中提取数据。

我们正在运行2017年12月的问题,但现在遇到了问题..但我们希望它的名称为2018年1月。(以及01/01/2018)

我认为他们写的方式意味着它正在寻找13/2017,这显然不存在。

任何人都可以推荐如何修改这个,以便我们可以立即运行它,以及我们如何确保我们不会在明年12月再次遇到这个问题?

public override string ToString()
    {
        var reportDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month + 1, 1);

        if (!String.IsNullOrWhiteSpace(AppConfigHelper.EndDate))
        {
            var year = Int32.Parse(AppConfigHelper.EndDate.Substring(6, 4));
            var month = Int32.Parse(AppConfigHelper.EndDate.Substring(3, 2));
            var day = Int32.Parse(AppConfigHelper.EndDate.Substring(0, 2));
            reportDate = new DateTime(year, month, day);
            reportDate = reportDate.AddDays(1);
        }

1 个答案:

答案 0 :(得分:3)

您可以使用DateTime.Today.AddMonths(1)

var nextMonth = DateTime.Today.AddMonths(1);
reportDate = new DateTme(nextMonth.Year, nextMonth.Month, 1);
// ...

顺便说一下,你不需要字符串方法而int.Parse来获取DateTime,使用ParseExact

if (!String.IsNullOrWhiteSpace(AppConfigHelper.EndDate))
{
    reportDate = DateTime.ParseExact(AppConfigHelper.EndDate, "ddMMyyyy", null);
    reportDate = reportDate.AddDays(1);
}