2016-08-17 95 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