2010-10-22 58 views

回答

15

你可以使用DateTime.ParseExact,但我認爲你必須在試圖解析它之前去掉「On」。

編輯根據format documentation你可能不必去掉「On」。

var theDate = DateTime.ParseExact(theString, "On dddd ddth MMMM yyy", 
        CultureInfo.InvariantCulture); 

應該這樣做。

1

正如klausbyskov指出,DateTime.ParseExact是要走的路。 我相信你需要正確的格式字符串(測試):

@"On dddd dd\t\h MMMM yyyy..." 

的「T」和需要進行轉義「H」字,因爲它們分別攜帶(「AM/PM」和「小時」的特殊意義)。

但請注意,解析器將執行一些驗證檢查。尤其是,自2010年3月25日恰好是星期四以來,你的榜樣將無法解析。與嘗試:

"On Thursday 25th March 2010..." 

對於輸出,你需要的格式字符串:

"dd/MM/yy" 
2

你不能單獨約會解析做到這一點。任何適用於25日的格式字符串都將在22日或23日失敗。就個人而言,我會使用正則表達式將日期分解爲可解析的內容。

string s = "On Monday 25th March 2010"; 
string pattern = @"^[^0-9]+(\d+)(\w\w)?"; 
string clean = Regex.Replace(s, pattern,@"$1"); 
string result = DateTime.ParseExact(clean,"dd MMMM yyyy", 
     CultureInfo.InvariantCulture) 
    .ToString("dd/MM/yy"); 
-1

使用本:

using System; using System.Collections.Generic; using 
System.ComponentModel; using System.Data; using System.Drawing; using 
System.Text; using System.Windows.Forms; 

namespace DateTimeConvert { 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      label1.Text= ConvDate_as_str(textBox1.Text); 
     } 

     public string ConvDate_as_str(string dateFormat) 
     { 
      try 
      { 
       char[] ch = dateFormat.ToCharArray(); 
       string[] sps = dateFormat.Split(' '); 
       string[] spd = sps[0].Split('.'); 
       dateFormat = spd[0] + ":" + spd[1]+" "+sps[1]; 
       DateTime dt = new DateTime(); 
       dt = Convert.ToDateTime(dateFormat); 
       return dt.Hour.ToString("00") + dt.Minute.ToString("00"); 
      } 
      catch (Exception ex) 
      { 
       return "Enter Correct Format like <5.12 pm>"; 
      } 

     } 


     private void button2_Click(object sender, EventArgs e) 
     { 
      label2.Text = ConvDate_as_date(textBox2.Text); 
     } 

     public string ConvDate_as_date(string stringFormat) 
     { 
      try 
      { 
       string hour = stringFormat.Substring(0, 2); 
       string min = stringFormat.Substring(2, 2); 
       DateTime dt = new DateTime(); 
       dt = Convert.ToDateTime(hour+":"+min); 
       return String.Format("{0:t}", dt); ; 
      } 
      catch (Exception ex) 
      { 
       return "Please Enter Correct format like <0559>"; 
      } 
     } 
    } 
} 
+0

OP爲什麼要使用它?請解釋! – markus 2012-12-11 23:02:47