是否有DateTime.ToString(“”)的格式值,它将以三位数指定一年中的某一天?
例如:
答案 0 :(得分:23)
不,你可以使用DateTime.DayOfYear。ToString(“000”);
您的示例:
new DateTime(2012, 1, 1).DayOfYear.ToString("000");
new DateTime(2012, 2, 1).DayOfYear.ToString("000");
new DateTime(2012, 12, 31).DayOfYear.ToString("000");
new DateTime(2011, 12, 31).DayOfYear.ToString("000");
答案 1 :(得分:1)
没有;那不是listed 遗憾。
答案 2 :(得分:0)
我需要一种方法来允许用户提供可以处理一年中某一天的格式,然后我想出了以下代码。
public static string FormatDate(this DateTime date, string format)
{
var builder = new StringBuilder();
int numOfjs = 0;
bool escaped = false;
foreach (char c in format)
{
if (c == 'j' && !escaped)
{
numOfjs++;
}
else
{
if (c == 'j' && escaped)
{
builder.Remove(builder.Length - 1, 1);
}
if (numOfjs > 0)
{
var dayOfYearFormat = new string('0', Math.Min(3, numOfjs));
builder.Append(date.DayOfYear.ToString(dayOfYearFormat));
}
numOfjs = 0;
builder.Append(c);
}
escaped = c == '\\' && !escaped;
}
if (numOfjs > 0)
{
var dayOfYearFormat = new string('0', Math.Min(3, numOfjs));
builder.Append(date.DayOfYear.ToString(dayOfYearFormat));
}
return date.ToString(builder.ToString());
}
这使您可以使用一种格式替换连续的未分隔字母j与一年中的某一天。根据j的数量,它将零填充最多3位数。超过3连续的j就像3一样。
它基本上重写了格式,用j替换分隔的j,用一年中的连续j替换j。然后,它将此新格式传递给DateTime.ToString()
。
答案 3 :(得分:0)
我知道这有点旧,但是如果你绝对肯定地必须在一行代码中执行它而无法访问DateTime.DayOfYear
函数(就像我今天必须做的那样):
int myDay = floor(Now() - Date(parseInt(Now().ToString("yyyy")), 1, 1)) + 1;