2016-08-17 35 views
1

我有一個需要轉換爲「dd/MM/yy」的字符串。我將它轉換爲Date數據類型,然後將其格式化回字符串。我想知道是否有一個更簡單/優雅的方式來做到這一點。 這裏是怎麼了實現這一目標現在格式化字符串爲「dd/MM/yy」

Dim strValue As String = "17/08/2016" 
Dim dteValue as Date = Convert.ToDateTime(strValue) 
strValue = dteValue.ToString("dd/MM/yy") 

我所尋找的是沒有它強制轉換爲date數據類型轉換的一種方式,是有可能的例子嗎?

+0

是輸入格式總是'DD/MM/yyyy'?如果是這樣的話,你可以把這個字符串的「yy」剪掉。 – RemarkLima

+1

你在做什麼看起來不錯,另一種方法是從給定的字符串中簡單地刪除第3個和第4個最後一個字符,使用任何字符串操作。 – AmanSinghal

+1

如果你以'String'開始,你以'String'結尾,並且你沒有在它們之間轉換爲'Date',那麼它就像任何其他文字一樣。就像任何文本一樣,您可以對其執行字符串操作操作。例如,你可以調用'String.Split','String.Substring'和'String.Join'。這雖然不是更容易或更優雅。此外,如果文化被設置爲不使用「dd/MM/yyyy」作爲短日期格式(例如, EN-US。使用Date.ParseExact或者.TryParseExact可能是值得的。 – jmcilhinney

回答

0

你可以使用一個擴展方法:

public static string ToMyDateString(this string stringDate) 
{ 
    return DateTime.Parse(stringDate).ToString("dd/MM/yy"); 
} 

,然後用它像這樣:

string strValue = "17/08/2016".ToMyDateString(); 

string strValue = "17/08/2016"; 
string strValueDate = strValue.ToMyDateString(); 

剛剛意識到你在VB.NET所以很確定它會翻譯。如果我有一點時間,我會嘗試在VB.NET中做到這一點。

VB.NET版本

<System.Runtime.CompilerServices.Extension> _ 
Public Shared Function ToMyDateString(stringDate As String) As String 
    Return DateTime.Parse(stringDate).ToString("dd/MM/yy") 
End Function 

警告 - 這個剛剛通過轉換器放,所以可能需要進行調整。

+0

非常感謝!它基本上與我使用的邏輯相同,但稍微扭曲。我害怕它不是我正在尋找的,我想知道是否可以在不改變數據類型的情況下進行轉換。原來它不是。我知道我的方法可能不正確,但它是什麼,我需要與它合作。 – Leprechaun

+0

啊,但你問了一個更優雅的方式,在我看來,擴展方法非常優雅,只需將它們調用到該類型上即可! – RemarkLima

+1

如果您仔細閱讀我的問題,尤其是最後一行「是否有一種方法可以在沒有數據類型轉換的情況下實現這一點」。不要質疑你的代碼「優雅」。 – Leprechaun

0

沒有它鑄造日期,我建議:

 Dim strValue As String = "17/08/2016" 
     strValue = strValue.PadLeft(6) & strValue.PadRight(2) 

這需要我的電腦1毫秒來處理上面的代碼10.000倍,而22毫秒來處理你的。

編輯:如果日期有不同的長度,你可能分裂的forwardslash和重建它:

 Dim arrSplitValue() As String = Split("17/08/2016", "/") 
     Dim strValue As String = arrSplitValue(0) & "/" & arrSplitValue(1) & "/" & arrSplitValue(2).PadRight(2) 
+0

謝謝!正如我在我的評論中發佈的數字字符打敗了目的,因爲字符串可能有不同的長度。 – Leprechaun

+0

對不起,我的觀點似乎不清楚,日期字符串可以是「17/08/2016」或「From Date:17/08/2016」或「xyz」,因此計算字符串和填充方法中的字符不會計算在內在這種情況下工作。謝謝你的幫助! – Leprechaun