2010-10-22 26 views

Respuesta

15

Puede usar DateTime.ParseExact, pero creo que tiene que pelar "Encendido" antes de intentar analizarlo.

EDIT De acuerdo con format documentation es probable que no tenga que pelar "Encendido" después de todo.

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

Debería hacerlo.

1

Como señala klausbyskov, DateTime.ParseExact es el camino a seguir. Creo que la cadena de formato correcto que necesita es (prueba):

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

La 't' y los personajes 'H' necesito ser escapado ya que llevan un significado especial ('AM/PM' y 'horas', respectivamente)

Sin embargo, tenga en cuenta que el analizador realizará algunas verificaciones de validación. En particular, su ejemplo no podrá analizar desde que el 25 de marzo de 2010 resultó ser un jueves; intentarlo con:

"On Thursday 25th March 2010..." 

En cuanto a la la salida, la cadena de formato que necesita es:

"dd/MM/yy" 
2

No se puede hacer esto con la fecha de análisis solo. Cualquier cadena de formato que funcione para el día 25 va a fallar para el día 22 o el 23. Personalmente, utilizaría una expresión regular para desvincular la fecha en algo que pueda analizarse.

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

uso esto:

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

¿Por qué el OP debería usar esto? ¡Por favor explique! – markus