我在函数中有以下代码行:
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 =“10月2日”(我希望“10”)
答案 0 :(得分:3)
使用相对DateTime properties以获取日,月和年
**** ****已编辑
检查此代码以查看“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"
答案 1 :(得分:2)
当使用与标准格式匹配的单个字符自定义格式时,需要在格式前放置“%”。例如:
endDate.Value.ToString("%d");
请参阅http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx#UsingSingleSpecifiers
答案 2 :(得分:1)
查看this site。
这根本不是不规则的,事实上你使用单字符标准格式(here)作为日期。
如果您希望以您期望的方式分割格式,请使用dd
和MM
,或者(如果这是您需要做的)而不是取整数值来自DateTime
对象。
即:
endDate.Value.Day
endDate.Value.Month
答案 3 :(得分:0)
我认为你的格式字符串错了。试试“dd”和“MM”。
答案 4 :(得分:0)
某些模式有某种短名称 - 单个字符名称,与完整模式中使用的相同,但不幸的是有不同的含义。你刚刚发现了。
这是另一个有用的site。