2013-12-21 79 views
1

任何人都可以告訴我最好的方法或解決方案,我將如何做到以下幾點?從日期時間月份和日期(字符串)中刪除'0'(數字)

string test = "21.12.2013"; 

我怎麼能現在刪除所有零的月份和日期的,但仍「保持」的日期時間邏輯:

//Example 1 
string input = "06.10.2013" // 6th October 
string output = "6.10.2013" //only remove '0' from the day 

//Example 2 
string input = "01.09.2012" // 1st September 
string output = "1.9.2012" //remove from month and day 

//Example 3 
string input = "20.10.2011" // 20th October 
string output = "20.10.2011" //should (must) stay! 

我在下面的格式有日期時間(如字符串)

我也可以解析DateTime如果這會讓它更容易,但是我希望你有我的想法...

任何幫助讚賞!

+0

這是顯示,並不影響它的保存方式。找到您的正確表示法[here](http://msdn.microsoft.com/en-us/library/8kb3ddd4(v = vs.110).aspx)。 –

回答

5

解析你的字符串轉換成DateTime並得到它回到使用ToString與所需的圖案串似乎是最容易的方式:

public static string GetRidOfZeros(string input) 
{ 
    var dt = DateTime.ParseExact(input, "dd.MM.yyyy", CultureInfo.InvariantCulture); 
    return dt.ToString("d.M.yyyy", CultureInfo.InvariantCulture); 
} 

小測試,你的樣本數據:

var inputs = new List<string> { "06.10.2013", "01.09.2012", "20.10.2011" }; 
var outputs = new List<string> { "6.10.2013", "1.9.2012","20.10.2011" }; 

if(outputs.SequenceEqual(inputs.Select(d => GetRidOfZeros(d)))) 
    Console.WriteLine("Output is OK"); 
else 
    Console.WriteLine("Collections does not match."); 

打印Output is OK

+0

Thx非常多,我完全忘了回合'ToString(「dMyyyy」)':( – eMi

3
DateTime.Parse(input).ToString("d.M.yyyy") 
2

正如你所說的,解析到DateTime第一很可能會令事情變得更容易,因爲那麼你可以使用:

myDateTime.ToString("d.M.yyyy"); 
2

當你分析它,你可以使用的ToString它,你喜歡的任何方式格式化:

var date = "06.10.2013"; 

DateTime parsed = DateTime.ParseExact(date, "dd.MM.yyyy", CultureInfo.InvariantCulture); 

var noZerosHere = parsed.ToString("d.MM.yyyy"); 
-1

一個體面的「包羅萬象」的方法(這是行不通的只是DateTime但任何一種字符串)將拆分字符串時,取出前導零,然後再聚首把碎片。

string input = "01.09.2012"; 
string[] values = input.Split("."); 
string[] modifiedValues = values.Select(x => x.TrimStart('0'); 
string output = String.Join(".", modifiedValues); 

您可以調整DateTime不同表示的分隔符,例如,那些使用斜槓(01/09/2012)或寫入不同的順序。

+0

爲什麼地球上你會這樣做?你不信任.NET的內置DateTime嗎? – Kenneth

+0

IMO它是關於「刪除前導零子字符串「,而不是」重新格式化DateTime「。我會說,給出一個純字符串操作的答案是很好的,儘管在這種特殊情況下'ParseExact'和'ToString'也可以完成這項工作。 –

+1

標題說「從DateTime Month和Day中刪除'0'(Number)」,所以它重新格式化一個'DateTime'。儘管你的方法可能起作用,但它並不是很好的建議。 – Kenneth

相關問題