2010-11-23 6 views
4

J'ai un programme qui est capable de récupérer des sections/partie de l'heure d'un fichier texte de journal en utilisant la tokenisation. Le but principal du programme, qui est de récupérer la partie temps, passe ensuite à la conversion de la chaîne en un format DateTime qui pourrait ensuite être utilisé dans le cadre d'une fonction chronologique.C# Comment convertir le format String en Time utilisé pour Time Range?

Toutefois, lors de la conversion de l'heure en DateTime, le système génère les résultats en "23/11/2010 21:31:00 PM" qui convertit correctement l'heure au format 12 heures, mais utilise la fonction Date. Par conséquent, la question serait de savoir comment convertir uniquement l'heure et PAS la sortie ou traiter la date. Et comment l'heure peut-elle être convertie en format 24 heures en HH: MM: SS?

S'il vous plaît des conseils sur les codes. Merci!

class Program 
{ 
    static void Main(string[] args) 
    { 

     //System.Collections.Generic.IEnumerable<String> lines = File.ReadLines("C:\\Test\\ntfs2.txt"); 

     String value = "Thu Mar 02 1995 21:31:00,2245107,m...,r/rrwxrwxrwx,0,0,8349-128-3,C:/Program Files/AccessData/AccessData Forensic Toolkit/Program/wordnet/Adj.dat"; 

     //foreach (String r in lines) 
     //{ 

     String[] token = value.Split(','); 

     String[] datetime = token[0].Split(' '); 

     String timeText = datetime[4]; // The String array contans 21:31:00 

     DateTime time = Convert.ToDateTime(timeText); // Converts only the time 

     Console.WriteLine(time); 

    } 
} 

Répondre

7
//System.Collections.Generic.IEnumerable<String> lines = File.ReadLines("C:\\Test\\ntfs2.txt"); 
    String value = "Thu Mar 02 1995 21:31:00,2245107,m...,r/rrwxrwxrwx,0,0,8349-128-3,C:/Program Files/AccessData/AccessData Forensic Toolkit/Program/wordnet/Adj.dat"; 

    String[] token = value.Split(','); 

    String[] datetime = token[0].Split(' '); 

    String timeText = datetime[4]; // The String array contans 21:31:00 

    DateTime time = Convert.ToDateTime(timeText); // Converts only the time 

    Console.WriteLine(time.ToString("HH:mm:ss")); 

Vous pouvez utiliser DateTime.ToString ("pattern") pour convertir un DateTime à tout format souhaité.

Il y a une liste des modèles disponibles ici http://www.geekzilla.co.uk/View00FF7904-B510-468C-A2C8-F859AA20581F.htm

+0

Est-il possible que le time.ToString soit converti en un autre La variable DateTime laisse supposer time2 = time.ToString ("HH: mm: ss")? – JavaNoob

+0

time.ToString ("HH: mm: ss") renvoie une chaîne. la valeur LValue doit donc être de type string, elle ne peut pas être affectée à un DateTime. – abhilash

1
//your log record 
string record = "Thu Mar 02 1995 21:31:00,2245107..."; 

//get the first part - you can include the Thu Mar 02 1995 (datetime can parse) 
string date = record.Split(',')[0]; 

//parse to date time (the Thu Mar 02 doesn't phase dateTime) 
DateTime dt = DateTime.Parse(date); 

//convert the datetime to a string HH = 24 Hours leading zero, mm = minutes, ss = seconds 
string time = dt.ToString("HH:mm:ss"); 

//write! 
Console.WriteLine(time); 

modifier je vois que vous dites ne traitent pas la date, ce processus techniquement - mais il est beaucoup plus propre que le fractionnement en fonction des espaces et la reconstruction de la pièce de temps par pièce.

+0

DateHeure dt = Nouveau DateHeure (date); Erreur: Meilleure correspondance de méthode surchargée pour ... a des arguments non valides. – JavaNoob

+0

DateTime.TryParse pourrait aider ici – abhilash

+0

Mon mauvais - DateTime.TryParse (.. ..), ou si vous ne voulez pas vérifier l'erreur DateTime.Parse() – Prescott

0
DateTime x = DateTime.Parse("01/01/2010 10:45 PM"); 
Console.WriteLine(x.ToString("HH:mm")); 
2

il suffit d'utiliser ce code pour convertir le temps de date comme 17h12 à 1712

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]; 

      if ((sps[1].ToUpper() != "PM") && (sps[1].ToUpper() != "AM")) 
      { 
       return "Enter Correct Format like <5.12 pm>"; 
      } 

      DateTime dt = new DateTime(); 
      dt = Convert.ToDateTime(dateFormat); 
      string date = ""; 
      if (sps[1].ToUpper() == "PM") 
      { 
       date = (dt.Hour + 12).ToString("00"); 
      } 
      else 
       date = dt.Hour.ToString("00"); 
      return date + dt.Minute.ToString("00"); 
     } 
     catch (Exception ex) 
     { 
      return "Enter Correct Format like <5.12 pm>"; 
     } 

    } 
0

Il suffit d'utiliser ce code pour convertir la chaîne en temps

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

Pourquoi c'est si difficile mon code:

private void timer7_Tick(object sender, EventArgs e) 
     { 
      label4.Text = DateTime.Now.TimeOfDay.Hours.ToString() + ":" + DateTime.Now.TimeOfDay.Minutes.ToString() + ":" + DateTime.Now.TimeOfDay.Seconds.ToString() + ":" + DateTime.Now.TimeOfDay.TotalMilliseconds.ToString(); 
      label7.Text = DateTime.Now.Date.Year.ToString() + "-" + DateTime.Now.Date.Month.ToString() + "-" + DateTime.Now.Date.Day.ToString(); 
     } 
+0

Un peu plus d'explications pourraient aider les programmeurs à comprendre comment les choses fonctionnent dans votre code. – Daenarys