DateTime.ToString(「」)是否有一個格式值,以三位數字指定一年中的哪一天?DateTime格式日期
例如:
- 2012年1月1日將是001
- 2012年2月1日將是032
- 2012年12月31日將是366(閏年)
- 12月31日, 2011將是365
DateTime.ToString(「」)是否有一個格式值,以三位數字指定一年中的哪一天?DateTime格式日期
例如:
不,您可以使用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");
否;那不是listed。
對不起。
我需要一種方法來允許用戶提供一種可以處理一年中某天的格式,並且我提出了以下代碼。
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代表一年中的某一天。然後它將這種新格式傳遞給DateTime.ToString()
。
我知道這是有點老了,但如果你絕對,肯定,必須這樣做,在一行代碼無需訪問DateTime.DayOfYear
功能(像我今天做):
int myDay = floor(Now() - Date(parseInt(Now().ToString("yyyy")), 1, 1)) + 1;
我很好奇你的用例是你a)必須在一行代碼中完成的,b)沒有DayOfYear – Dismissile 2017-07-07 12:07:00
用戶端腳本,MS Access風格。是的,當我編寫腳本處理程序時,我可能已經進入並添加了我們甚至沒有意識到的功能,但是隨後我們不得不重新編譯和測試,併爲客戶提供新的構建,並浪費了更多的時間時間和客戶的時間來構建一個用戶案例,這個案例在十年左右的時間裏從未出現過,但如果我們可以使用已經提供的功能,那麼它會更好。 – Trevortni 2017-07-07 15:42:10
無賴,但這幾乎同樣值得感謝。 – Dismissile 2012-03-09 19:58:36
你輸入得太快了。 - ) – 2012-03-09 19:59:04