2010-10-22 73 views

Trả lời

15

Bạn có thể sử dụng DateTime.ParseExact, nhưng tôi nghĩ bạn phải xóa "Bật" trước khi cố gắng phân tích cú pháp.

EDIT Theo số format documentation bạn có thể không phải bỏ qua "Bật" sau.

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

Nên làm điều đó.

1

Như klausbyskov chỉ ra, DateTime.ParseExact là cách để thực hiện. Tôi tin rằng chuỗi định dạng chính xác bạn cần được (thử nghiệm):

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

Các 't' và ký tự 'h' cần phải được thoát vì chúng mang ý nghĩa đặc biệt ('AM/PM' và 'giờ' tương ứng).

Lưu ý rằng, trình phân tích cú pháp sẽ thực hiện một số kiểm tra xác thực. Đặc biệt, ví dụ của bạn sẽ không phân tích cú pháp kể từ ngày 25 tháng 3 năm 2010 đã xảy ra là một ngày thứ năm; thử nó với:

"On Thursday 25th March 2010..." 

Đối với đầu ra, chuỗi định dạng mà bạn cần là:

"dd/MM/yy" 
2

Bạn không thể làm điều này với ngày phân tích một mình. Bất kỳ chuỗi định dạng nào hoạt động cho ngày 25 sẽ bị lỗi cho ngày 22 hoặc ngày 23. Cá nhân, tôi sẽ sử dụng cụm từ thông dụng để tách ngày thành nội dung có thể phân tích cú pháp.

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

sử dụng này:

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

Tại sao OP nên sử dụng điều này? Vui lòng giải thích! – markus

Các vấn đề liên quan