.net AddDays()不是递增的月份
在my code.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
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
——否则,如果当前线程区域性使用不同的日历系统,可能会得到一些非常奇怪的结果