如何將日期時間字段轉換爲C#格式的1st Feb 2011
格式的字符串? doj
是在sql server中的datetime
字段。如何將日期時間字段轉換爲像2011年2月1日那樣的字符串?
string DateOfJoin = dt.Rows[0]["DOJ"].ToString();//2011-02-01 00:00:00.000
如何將日期時間字段轉換爲C#格式的1st Feb 2011
格式的字符串? doj
是在sql server中的datetime
字段。如何將日期時間字段轉換爲像2011年2月1日那樣的字符串?
string DateOfJoin = dt.Rows[0]["DOJ"].ToString();//2011-02-01 00:00:00.000
首先,2/1/2011
可以是2月1日或1月2日不 1月1日
其次,讓我們來分析你string
到DateTime
。
DateTime dt = DateTime.ParseExact(dt.Rows[0]["DOJ"].ToString(),
"M/d/yyyy hh:mm:ss tt",
CultureInfo.InvariantCulture);
,或者你可以明確地將其轉換爲DateTime
DateTime dt = (DateTime)dt.Rows[0]["DOJ"];
三,.NET並沒有在BCL內置的方式來產生天后綴。但Lazlowwrite a method因爲這對我來說似乎是okey;
static string GetDaySuffix(int day)
{
switch (day)
{
case 1:
case 21:
case 31:
return "st";
case 2:
case 22:
return "nd";
case 3:
case 23:
return "rd";
default:
return "th";
}
}
你可以像這樣的方法;
string DateOfJoin = String.Format("{0}{1} {2}",
dt.Day,
GetDaySuffix(dt.Day),
dt.ToString("MMM yyyy", CultureInfo.InvariantCulture));
產生
感謝您的努力。 –
@krishnamohan很高興幫助。 –
// try this
string DateOfJoin =Convert.ToDateTime(dt.Rows[0]["DOJ"]).ToString("dd MMMM yyyy HH:mm:ss");
string DateOfJoin =Convert.ToDateTime(dt.Rows[0]["DOJ"]).ToString("dd MMMM yyyy");
這不是重點。 –
@SonerGönül爲什麼? –
再次重新閱讀該問題。 –
根據指定的文化,悠久的日期字符串可以通過鑄造對象爲DateTime,然後調用ToString()
與格式參數來實現。
string DateOfJoin = ((DateTime)dt.Rows[0]["DOJ"]).ToString("D");
進一步參考here
編輯:格式化的東西,如「1」,「2號」,要求你寫一個評估日數的自定義方法,並附加正確的字符串給它,像:
private string GetSuffix(DateTime dt)
{
if(dt.Days % 10 == 1)
{
return dt.Days.ToString() + "st";
}
else if(dt.Days % 10 == 2)
{
return dt.Days.ToString() + "nd";
}
else if(dt.Days % 10 == 3)
{
return dt.Days.ToString() + "rd";
}
else
{
return dt.Days.ToString() + "th";
}
}
然後添加字符串的這一部分,以日期時間的一個ToString( 「Y」),如:
string DateOfJoin = GetSuffix((DateTime)dt.Rows[0]["DOJ"]) + " " + ((DateTime)dt.Rows[0]["DOJ"]).ToString("Y");
看起來第一列不是基於OP評論的DateTime。 –
得到像這樣的輸出 - 2011年2月1日星期二。但我需要2011年2月1日 –
'F'作爲'char'?我很確定沒有這樣的過載。 –
使用下面的格式,以獲得類似的不帶後綴see explanation
string DateOfJoin = dt.Rows[0]["DOJ"].ToString("dd MMMM yyyy");
但是得到你需要的後綴打破它,讓你得到一天單獨即
string DateOfJoin = dt.Rows[0]["DOJ"].ToString("dd MMMM yyyy");
我會在下面用,如果你真的需要
string day = dt.Rows[0]["DOJ"].ToString("dd");
day = GetDaySuffix(Int32.Parse(day));
這是用一個函數來補充一點,我最初發現here
string GetDaySuffix(int day)
{
switch (day)
{
case 1:
case 21:
case 31:
return "st";
case 2:
case 22:
return "nd";
case 3:
case 23:
return "rd";
default:
return "th";
}
}
string DateOfJoin = String.Format("{0} {1}", day, dt.Rows[0]["DOJ"].ToString("MMMM yyyy"));
未經測試,但應該是有益的開端
此釘可使用以下方法來完成:
DateTime date = new DateTime(2015, 01, 01);
// 1st Jan 2015
string s = Ordinal.Add(date.Day) + date.ToString(" MMM yyyy", System.Globalization.CultureInfo.InvariantCulture);
這裏Ordinal
類實現如下:
static class Ordinal {
public static string Add(int num) {
if(num <= 0) return num.ToString();
switch(num % 100) {
case 11:
case 12:
case 13:
return num + "th";
}
switch(num % 10) {
case 1: return num + "st";
case 2: return num + "nd";
case 3: return num + "rd";
default: return num + "th";
}
}
}
您的字符串是「2015年1月1日」還是「2/1/2011 12:00:00 AM」?該數據表中第一列的類型是什麼? –
我需要這種格式。日月年。我的字符串是2/1/2011 12:00:00 AM –
而2011年2月1日可以是'2月1日'或'2月1日**'而不是**'1月1日'。 –