Conversia unui Șir la DateTime

Cum a face tu a converti un șir de caractere, cum ar fi `2009-05-08 14:40:52,531 într-o "DateTime"?

Comentarii la întrebare (4)

Din moment ce sunt de manipulare 24 de ore pe bază de timp și aveți o virgulă separă secunde fracțiune, vă recomandăm să specificați un format personalizat:

DateTime myDate = DateTime.ParseExact("2009-05-08 14:40:52,531", "yyyy-MM-dd HH:mm:ss,fff",
                                       System.Globalization.CultureInfo.InvariantCulture);
Comentarii (7)

Ai practic două opțiuni pentru acest lucru. DateTime.Parse () " și " DateTime.ParseExact().

Primul este foarte iertător în ceea ce privește sintaxa și va analiza datele în mai multe formate diferite. Este bun pentru o intrare de utilizator, care ar putea veni în diferite formate.

ParseExact va permite să specificați exact formatul de data string la utilizarea pentru analizare. Este bine să utilizați acest lucru, dacă șirul este întotdeauna în același format. În acest fel, puteți detecta cu ușurință orice abateri de la date de așteptat,.

Puteți analiza de utilizator de intrare astfel:

DateTime enteredDate = DateTime.Parse(enteredString);

Dacă aveți un format specific pentru șirul, ar trebui să utilizați o altă metodă:

DateTime loadedDate = DateTime.ParseExact(loadedString, "d", null);

"d" standuri pentru scurt data model (a se vedea [MSDN pentru mai multe informatii][1]) șinull` precizează că actuala cultură ar trebui să fie utilizate pentru analiză în șir.

Comentarii (0)

încercați acest lucru

DateTime myDate = DateTime.Parse(dateString);

un mod mai bun ar fi asta:

DateTime myDate;
if (!DateTime.TryParse(dateString, out myDate))
{
    // handle parse failure
}
Comentarii (0)

utilizarea DateTime.Parse(șir)

DateTime dateTime= DateTime.Parse(dateTimeStr);
Comentarii (0)

Se pare ca nimeni nu a pus în aplicare o metodă de prelungire. Cu ajutorul @CMS's a răspunde:

De lucru și îmbunătățirea sursă complet exemplu este aici: Gist Link

namespace ExtensionMethods {
    using System;
    using System.Globalization;

    public static class DateTimeExtensions {
        public static DateTime ToDateTime(this string s, 
                  string format = "ddMMyyyy", string cultureString = "tr-TR") {
            try {
                var r = DateTime.ParseExact(
                    s: s,
                    format: format,
                    provider: CultureInfo.GetCultureInfo(cultureString));
                return r;
            } catch (FormatException) {
                throw;
            } catch (CultureNotFoundException) {
                throw; // Given Culture is not supported culture
            }
        }

        public static DateTime ToDateTime(this string s, 
                    string format, CultureInfo culture) {
            try {
                var r = DateTime.ParseExact(s: s, format: format, 
                                        provider: culture);
                return r;
            } catch (FormatException) {
                throw;
            } catch (CultureNotFoundException) {
                throw; // Given Culture is not supported culture
            }

        }

    }
}

namespace SO {
    using ExtensionMethods;
    using System;
    using System.Globalization;

    class Program {
        static void Main(string[] args) {
            var mydate = "29021996";
            var date = mydate.ToDateTime(format: "ddMMyyyy"); // {29.02.1996 00:00:00}

            mydate = "2016 3";
            date = mydate.ToDateTime("yyyy M"); // {01.03.2016 00:00:00}

            mydate = "2016 12";
            date = mydate.ToDateTime("yyyy d"); // {12.01.2016 00:00:00}

            mydate = "2016/31/05 13:33";
            date = mydate.ToDateTime("yyyy/d/M HH:mm"); // {31.05.2016 13:33:00}

            mydate = "2016/31 Ocak";
            date = mydate.ToDateTime("yyyy/d MMMM"); // {31.01.2016 00:00:00}

            mydate = "2016/31 January";
            date = mydate.ToDateTime("yyyy/d MMMM", cultureString: "en-US"); 
            // {31.01.2016 00:00:00}

            mydate = "11/شعبان/1437";
            date = mydate.ToDateTime(
                culture: CultureInfo.GetCultureInfo("ar-SA"),
                format: "dd/MMMM/yyyy"); 
         // Weird :) I supposed dd/yyyy/MMMM but that did not work !?$^&*

            System.Diagnostics.Debug.Assert(
               date.Equals(new DateTime(year: 2016, month: 5, day: 18)));
        }
    }
}
Comentarii (0)

Încercați de mai jos, unde strDate este data in 'LL/zz/aaaa' format

var date = DateTime.Parse(strDate,new CultureInfo("en-US", true))
Comentarii (2)

Am încercat diferite moduri. Ceea ce a funcționat pentru mine a fost asta:

Convert.ToDateTime(data, CultureInfo.InvariantCulture);

"date" pentru mine a fost astfel de momente 9/24/2017 9:31:34 AM

Comentarii (3)
string input;
DateTime db;
Console.WriteLine("Enter Date in this Format(YYYY-MM-DD): ");
input = Console.ReadLine();
db = Convert.ToDateTime(input);

//////// this methods convert string value to datetime
///////// in order to print date

Console.WriteLine("{0}-{1}-{2}",db.Year,db.Month,db.Day);
Comentarii (1)

Ai putea folosi, de asemenea, DateTime.TryParseExact() ca mai jos dacă nu sunteți sigur de valoarea de intrare.

DateTime outputDateTimeValue;
if (DateTime.TryParseExact("2009-05-08 14:40:52,531", "yyyy-MM-dd HH:mm:ss,fff", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out outputDateTimeValue))
{
    return outputDateTimeValue;
}
else
{
    // Handle the fact that parse did not succeed
}
Comentarii (0)

DateTime.Analiza

Sintaxa:

DateTime.Parse(String value)
DateTime.Parse(String value, IFormatProvider provider)
DateTime.Parse(String value, IFormatProvider provider, DateTypeStyles styles)

Exemplu:

string value = "1 January 2019";
CultureInfo provider = new CultureInfo("en-GB");
DateTime.Parse(value, provider, DateTimeStyles.NoCurrentDateDefault););
  • Valoarea: reprezentare șir de data și ora.
  • Furnizor de: obiect, care oferă cultura specifice de informații.
  • Stiluri: opțiuni de formatare care personaliza șir de parsare pentru unele data și ora parsarea metode. De exemplu, AllowWhiteSpaces este o valoare care ajută pentru a ignora toate spațiile prezent în șir în timp ce acesta analiza.

L's, de asemenea, demn de amintit DateTime este un obiect care este stocată ca și numărul intern în cadrul, Formatul se aplică numai când te converti înapoi la string.

  • Parsarea conversia unui șir la interne tip de număr.

  • Formatare de conversie internă valoare numerică de la un ușor de citit șir.

Recent am avut o problemă în cazul în care am fost încercarea de a converti un DateTime pentru a trece la Linq ce nu m't dat seama la timp a fost format este irelevant atunci când trece DateTime pentru o Interogare Linq.

DateTime SearchDate = DateTime.Parse(searchDate);
applicationsUsages = applicationsUsages.Where(x => DbFunctions.TruncateTime(x.dateApplicationSelected) == SearchDate.Date);

Full DateTime Documentația

Comentarii (0)

Pune acest cod într-un static class> public static class ClassName{ }

public static DateTime ToDateTime(this string datetime, char dateSpliter = '-', char timeSpliter = ':', char millisecondSpliter = ',')
{
   try
   {
      datetime = datetime.Trim();
      datetime = datetime.Replace("  ", " ");
      string[] body = datetime.Split(' ');
      string[] date = body[0].Split(dateSpliter);
      int year = date[0].ToInt();
      int month = date[1].ToInt();
      int day = date[2].ToInt();
      int hour = 0, minute = 0, second = 0, millisecond = 0;
      if (body.Length == 2)
      {
         string[] tpart = body[1].Split(millisecondSpliter);
         string[] time = tpart[0].Split(timeSpliter);
         hour = time[0].ToInt();
         minute = time[1].ToInt();
         if (time.Length == 3) second = time[2].ToInt();
         if (tpart.Length == 2) millisecond = tpart[1].ToInt();
      }
      return new DateTime(year, month, day, hour, minute, second, millisecond);
   }
   catch
   {
      return new DateTime();
   }
}

În acest mod, puteți utiliza

string datetime = "2009-05-08 14:40:52,531";
DateTime dt0 = datetime.TToDateTime();

DateTime dt1 = "2009-05-08 14:40:52,531".ToDateTime();
DateTime dt5 = "2009-05-08".ToDateTime();
DateTime dt2 = "2009/05/08 14:40:52".ToDateTime('/');
DateTime dt3 = "2009/05/08 14.40".ToDateTime('/', '.');
DateTime dt4 = "2009-05-08 14:40-531".ToDateTime('-', ':', '-');
Comentarii (0)

Diferite culturi din lume, scrie data siruri de caractere în diferite moduri. De exemplu, în SUA 01/20/2008 este 20 ianuarie, 2008. În Franța, acest lucru va arunca o InvalidFormatException. Acest lucru este pentru că Franța citește data-ori Zi/Lună/An, iar în SUA este Lună/Zi/An.

În consecință, un șir de caractere ca 20/01/2008 va analiza la 20 ianuarie 2008, în Franța, și apoi arunca un InvalidFormatException în SUA.

Pentru a determina cultura actuală setări, puteți utiliza Sistemul.Globalizarea.CultureInfo.CurrentCulture.

string dateTime = "01/08/2008 14:50:50.42";  
        DateTime dt = Convert.ToDateTime(dateTime);  
        Console.WriteLine("Year: {0}, Month: {1}, Day: {2}, Hour: {3}, Minute: {4}, Second: {5}, Millisecond: {6}",  
                          dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, dt.Millisecond);  
Comentarii (0)
String now = DateTime.Now.ToString("YYYY-MM-DD HH:MI:SS");//make it datetime
DateTime.Parse(now);

acesta vă oferă

2019-08-17 11:14:49.000
Comentarii (0)