C# 向DateTime变量添加月份

C# 向DateTime变量添加月份,c#,.net,C#,.net,我有一个datetime变量,值为12-02-2019,2019年2月12日-这就是我想要的。但在我的代码中,它是MM-dd-yyyy格式的。它以MM dd yyyy格式保存至数据库2019年12月2日。当我从Datebase返回时,它将类似于2019年12月2日2019年12月2日 int salesid = (int)dr["SalesID"]; // dr is the datarow DateTime salesdate = (DateTime)dr["SalesDate"];

我有一个datetime变量,值为12-02-2019,2019年2月12日-这就是我想要的。但在我的代码中,它是MM-dd-yyyy格式的。它以MM dd yyyy格式保存至数据库2019年12月2日。当我从Datebase返回时,它将类似于2019年12月2日2019年12月2日

  int salesid = (int)dr["SalesID"]; // dr is the datarow
  DateTime salesdate = (DateTime)dr["SalesDate"]; // 02-12-2019 (2nd Dec)
我想在2019年2月12日之前增加4个月。但是运行时间在2019年12月2日之前增加了4个月,我得到了2020年4月2日

  DateTime servicedate = salesdate.AddMonths(4); // 2020-12-02
这是错误的。我希望将销售日期指定为2019年2月12日,在销售日期增加4个月后,我应获得2019年6月12日


这在c语言中是如何实现的?

当您保存到数据库时,请确保您指定了一种更详细的格式,以便数据库不会混淆。例如,如果使用myDateTime.Formatdd MMM yyyy向数据库提供写操作;这样它就不会混淆月份和日期


这将确保代码和数据库中的格式保持一致

问题出在INSERT语句中。虽然应该按原样将日期时间传递给数据库API,而不是使用字符串,但如果需要简单的修复,而不是调用CurrentSaleItem.SaleDate,请使用另一个重载,让您在将值放入数据库之前明确指定区域性和/或格式,如

,月和日的属性是你期望的吗?另外,您使用的是什么数据库?您可以发布INSERT语句吗?从您描述的内容来看,您的插入似乎不正确。@JoeSewell我使用的是SQL Server 2008 R2。我的当前日期是2019年2月12日,加上4个月,我应该是2019年6月12日。@FrankBall这里是我的插入查询插入tbl_Sales VALUES+CurrentSaleItem.CustomerID+,“+CurrentSaleItem.SerialNo+,“+CurrentSaleItem.ModelNo+,”+CurrentSaleItem.SaleDate.ToString+”;始终使用参数以避免sql注入和格式错误。解决这个问题。日期不应是数据库中的字符串。您是否建议将日期作为字符串保存到数据库中?这个格式化函数来自哪里?