简体   繁体   English

C#如何将String转换为用于时间范围的时间格式?

[英]C# How to convert String into Time format used for Time Range?

I have a program that is able to retrieve sections/part of a log text file's time using tokenization. 我有一个程序能够使用标记化检索日志文本文件的部分/部分时间。

The main aim of the program which is to retrieve the time part then proceed onto converting the string to a DateTime format which could be then used as a part of a Time Range timeline function. 该程序的主要目的是检索时间部分然后继续将字符串转换为DateTime格式,然后可以将其用作时间范围时间轴函数的一部分。

However while converting the time into DateTime, the system outputs the results into "23/11/2010 9:31:00 PM" which correctly converts the time into at 12 Hour format but utilizes the Date function. 但是,在将时间转换为DateTime时,系统会将结果输出到“23/11/2010 9:31:00 PM”,这会将时间正确转换为12小时格式,但会使用日期功能。

Therefore the question would be how to only convert the time and NOT output or process the date. 因此问题是如何只转换时间和NOT输出或处理日期。 And how can the time be converted into a 24 Hour format into HH:MM:SS? 如何将时间转换为24小时格式为HH:MM:SS?

Please advice on the codes. 请告知代码。 Thanks! 谢谢!

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

    }
}
    //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"));

You can use DateTime.ToString("pattern") to convert a DateTime to any desired format. 您可以使用DateTime.ToString(“pattern”)将DateTime转换为任何所需的格式。

There's a list of patterns available here http://www.geekzilla.co.uk/View00FF7904-B510-468C-A2C8-F859AA20581F.htm 这里有一个模式列表http://www.geekzilla.co.uk/View00FF7904-B510-468C-A2C8-F859AA20581F.htm

just use this code to convert date time like 5.12 pm to 1712 只需使用此代码将日期时间转换为5.12 pm到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>";
        }

    }
//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);

edit I see you say don't process the date, this technically processes it - but it's a lot cleaner than splitting up based on spaces and rebuilding the time piece by piece. 编辑我看到你说不处理日期,这在技术上处理它 - 但它比基于空格分割和逐个重建时间要清晰得多。

Just use this code to convert string to time 只需使用此代码将字符串转换为时间

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>";
}

Why so hard this is my 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();
        }
DateTime x = DateTime.Parse("01/01/2010 10:45 PM");
Console.WriteLine(x.ToString("HH:mm"));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM