1

我在函数中有以下代码行:

String value = endDate.Value.ToString(dateFormatStr);
//endDate is a DateTime? object (returned from a LINQ to SQL query).

在我遇到奇怪行为的特定实例中,endDate 的值为 {10/2/2010 12:00:00 AM}。这是我的结果:

dateFormatStr="d" => value="10/2/2010"(我希望是“2”)
dateFormatStr="M" => value="October 2"(我希望是“10”)

4

5 回答 5

3

您的结果与微软规范一致

使用相关的DateTime 属性来获取日、月和年

****已编辑****

检查此代码以查看“d”字符如何改变其行为,具体取决于它是单独的还是模式字符串的一部分

DateTime time = DateTime.Now;

// 'd' is part of a pattern expression: "d "
MessageBox.Show(time.ToString("d "));
// result: "24 "

// 'd' defines a specific pattern: "short date"
MessageBox.Show(time.ToString("d"));
//result : "24/08/2010"
于 2010-08-23T13:10:23.060 回答
2

使用与标准格式匹配的单字符自定义格式时,需要在格式前面加上“%”。例如:

endDate.Value.ToString("%d");

请参阅http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx#UsingSingleSpecifiers

于 2010-08-23T14:35:36.313 回答
1

看看这个网站

这根本不是不规则的,实际上您正在使用单字符标准格式(此处)作为日期。

如果您想以您期望的方式拆分格式,请使用ddandMM或(如果这是您需要做的),而只需从DateTime对象中获取整数值。

IE:

endDate.Value.Day
endDate.Value.Month
于 2010-08-23T13:09:10.437 回答
0

我认为您的格式字符串错误。试试“dd”和“MM”。

于 2010-08-23T13:09:06.850 回答
0

有些模式有某种短名称——单字符名称,与完整模式中使用的相同,但遗憾的是含义不同。你刚刚发现了这一点。

这是另一个有用的网站。

于 2010-08-23T13:12:42.947 回答