如何在转换为字符串后从datetime完全删除时间段?

时间:2014-10-06 21:15:52

标签: c#

我需要将一个字符串参数传递给一个代表日期但只有10个字符长的存储过程。我无法改变存储过程来更改变量类型或长度。我唯一的选择是使用C#来确保参数合适。

为此,我想将DateTime对象转换为字符串并删除时间。我尝试在DateTime对象上使用.Date方法,但这只是将时间转换为午夜。这在我的本地机器上是可以的,它代表午夜的一系列零,但是我在午夜时间部署到我的代码的机器上的代表是12点。这会导致存储过程抛出异常。

我还尝试在将DateTime对象转换为字符串后取前10个字符来形成子字符串。然而,由于某些日子和月份是单个数字而其他日子是两位数这一事实,这给出了不一致的结果。

例如:

12/12/2010转换为“12/12/2010”

01/01/1900转换为“1/1/1900 1”(从1:00:00:00开始的'1')

2 个答案:

答案 0 :(得分:4)

您可以使用

string date = dt.ToShortDateString();

或(同义词)

string date = dt.ToString("d");

string date = dt.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture);

即使您当前的文化日期格式不同,最后一种方式也可确保格式化。

答案 1 :(得分:2)

有很多方法可以做到这一点:

var myDateTime = DateTime.Now;

var parameter = myDateTime.ToString(“yyyy-MM-dd”,CultureInfo.InvariantCulture);