我需要将一个字符串参数传递给一个代表日期但只有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')
答案 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);