Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何解析包含“0”的日期字符串;第17条;或者类似的后缀?_C#_Vb.net_Datetime_Datetime Format - Fatal编程技术网

C# 如何解析包含“0”的日期字符串;第17条;或者类似的后缀?

C# 如何解析包含“0”的日期字符串;第17条;或者类似的后缀?,c#,vb.net,datetime,datetime-format,C#,Vb.net,Datetime,Datetime Format,我有一个字符串,看起来像“2012年12月17日”,我想将其转换为日期时间,格式为dd/MM/yyyy 我一直在链接,但这是我想要实现的相反 我可以通过删除后缀(“17”中的“th”)和子字符串等,然后将其转换为datetime,但有没有直接的方法实现这一点 C代码也可以 这是我目前的代码,但看起来很难看。。哈哈 Private Function gettime(ByVal thetime As String) As DateTime Dim result As Date

我有一个
字符串
,看起来像“2012年12月17日”,我想将其转换为
日期时间
,格式为dd/MM/yyyy

我一直在链接,但这是我想要实现的相反

我可以通过删除后缀(“17”中的“th”)和子字符串等,然后将其转换为
datetime
,但有没有直接的方法实现这一点

C代码也可以

这是我目前的代码,但看起来很难看。。哈哈

Private Function gettime(ByVal thetime As String) As DateTime        
    Dim result As DateTime
    Dim str1 As String = thetime
    Dim str2 As String = str1
    Dim ind As Integer = 0
    ind = str1.IndexOf(" ")
    str2 = str1.Substring(0, ind)
    str2 = Trim(StrReverse(str2))
    str2 = str2.Substring(2, 2)
    str2 = StrReverse(str2)
    ind = str1.IndexOf(" ")
    str1 = str2 & str1.Substring(ind)
    result = DateTime.Parse(str1)
    Return result
End Function

你试过什么吗

试试这个:

Dim time As DateTime = DateTime.Parse("17th December 2012")
更新

如果问题只是序号,则可以创建一个简单的过程来删除它们:

Sub RemoveOrdinals(time As String) As String
  time = time.Replace("nd", "")
  time = time.Replace("rd", "")
  time = time.Replace("st", "")
  time = time.Replace("th", "")
  Return time
End Sub

在执行
DateTime
转换之前,只需调用它。

此代码适用于我:

C#:

string datestring=“2012年12月17日”;
int indexOfFirstLetter=Regex.Match(
日期字符串,
“[a-z]”,
RegexOptions.IgnoreCase)索引;
datestring=datestring.Remove(indexOfFirstLetter,2);
DateTime date=DateTime.Parse(日期字符串);
VB.Net:

Dim datestring As String = "17th December 2012"
Dim indexOfFirstLetter As Integer = Regex.Match( _
    datestring, _
    "[a-z]", _
    RegexOptions.IgnoreCase).Index
datestring = datestring.Remove(indexOfFirstLetter, 2)
Dim yourdate As DateTime = DateTime.Parse(datestring)

您可以为解析添加多种格式

    Dim formats() As String = {"dd MMMM yyyy", "dd\s\t MMMM yyyy", "dd\t\h MMMM yyyy"}

    d = DateTime.ParseExact(s, formats, Globalization.CultureInfo.InvariantCulture, Globalization.DateTimeStyles.None)

谢谢,但它返回一个异常,称为“System.FormatException”。我尝试过搜索datetime格式,但没有找到适合我问题的格式。
RemoveOrdinals
方法无法按预期工作!考虑<代码>八月<代码>结束在<代码> st >代码>中,您将得到一个日期:<代码> 21 AUGU 2012 < /代码>。谢谢