2010-10-22 3 views

ответ

15

Вы можете использовать DateTime.ParseExact, но я думаю, вам нужно снять «Вкл.», Прежде чем пытаться его разобрать.

EDIT В соответствии с format documentation вам, вероятно, не обязательно удалять «On» afterall.

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

Должно сделать это.

1

Как указывает klausbyskov, DateTime.ParseExact - это путь. Я считаю, что правильная строка формата вам нужно будет (проверено):

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

«т» и «H» символы должны быть экранированы, так как они имеют особую значимость («AM/PM» и «час», соответственно,).

Обратите внимание, что анализатор проведет некоторые проверки. В частности, ваш пример не будет разбираться с 25 марта 2010 года, когда он будет в четверг; попробуйте это:

"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

Смежные вопросы