Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net AddDays()不是递增的月份_.net_Datetime - Fatal编程技术网

.net AddDays()不是递增的月份

.net AddDays()不是递增的月份,.net,datetime,.net,Datetime,在my codeAddDays(1)中,除当月最后一天外,其他所有日子都正常工作 我有一个数据表,其中包含从csv读取的数据。每行包含一个日期字符串,格式为yyyy-mm-dd。我想在这个日期加上一天。 下面的代码适用于日期不是该月最后一天的所有日期,但在其他情况下无法增加月份 例如: 2019-07-30正确地增加到2019-07-31,但是2019-07-31增加到2019-07-01,而不是2019-08-01 我尝试了Date.Parse,并尝试使用System.Globalizatio

在my code
AddDays(1)
中,除当月最后一天外,其他所有日子都正常工作

我有一个数据表,其中包含从csv读取的数据。每行包含一个日期字符串,格式为
yyyy-mm-dd
。我想在这个日期加上一天。 下面的代码适用于日期不是该月最后一天的所有日期,但在其他情况下无法增加月份

例如:

2019-07-30
正确地增加到
2019-07-31
,但是
2019-07-31
增加到
2019-07-01
,而不是
2019-08-01

我尝试了
Date.Parse
,并尝试使用
System.Globalization.CultureInfo.InvariantCulture
System.Globalization.DateTimeFormatInfo.InvariantInfo
,但没有成功

MS文档说

AddDays方法在执行日期算术时考虑闰年和一个月的天数

我做错了什么

Dim enUK As New System.Globalization.CultureInfo("en-UK")
For Each row As DataRow In Outs.Select
   Dim Lastdate As Date = DateTime.ParseExact(row("EndDate"), "yyyy-mm-dd", enUK) 
   Dim DepDate As Date = Lastdate.AddDays(1)
   row("Date") = DepDate.ToString("yyyy-mm-dd")
Next

我希望
行(“日期”)
的值为
2019-08-01
对于
行(“结束日期”)
2019-07-31的值,而不是我得到的
2019-07-01
的值,您在格式字符串中使用的
mm
,意思是分钟而不是月。因此,您没有正确解析开始的日期。你想要的是:

Dim enUK作为新系统。全球化。文化信息(“英国”)
将每行作为数据行输入输出。选择
Dim Lastdate As Date=DateTime.ParseExact(行(“结束日期”),“yyyy-MM-dd”,enUK)
Dim DepDate As Date=Lastdate.AddDays(1)
行(“日期”)=DepDate.ToString(“yyyy-MM-dd”,enUK)
下一个

请注意,我还将
enUK
参数添加到
ToString
——否则,如果当前线程区域性使用不同的日历系统,您可能会得到一些非常奇怪的结果。

您在格式字符串中使用了
mm
,这意味着几分钟而不是几个月。因此,您没有正确解析开始的日期。你想要的是:

Dim enUK作为新系统。全球化。文化信息(“英国”)
将每行作为数据行输入输出。选择
Dim Lastdate As Date=DateTime.ParseExact(行(“结束日期”),“yyyy-MM-dd”,enUK)
Dim DepDate As Date=Lastdate.AddDays(1)
行(“日期”)=DepDate.ToString(“yyyy-MM-dd”,enUK)
下一个
请注意,我还将
enUK
参数添加到
ToString
——否则,如果当前线程区域性使用不同的日历系统,可能会得到一些非常奇怪的结果