c # .net String To Date Time - PullRequest
       35

c # .net String To Date Time

0 голосов
/ 30 октября 2018

предположим, у меня есть строковая дата = "30-10-2018 15:00:00" как я могу сохранить переменную даты и времени в зависимости от региона компьютера и настроек времени

Это то, что я получил до сих пор:

 DateTime evtd;
 try
   {
     switch (cmbDateType.SelectedIndex)
     {
       case 1:
       //India 
       string dateString = dr.Cells[10].Value.ToString(),
       fmt = "dd-MM-yyyy HH:mm:ss";// "g";
       CultureInfo provider = CultureInfo.InvariantCulture;
       //provider=new CultureInfo("en-IN");
       //CultureInfo In = new CultureInfo("en-IN");
       //"dd-MM-yyyy HH:mm:ss"
       //string fmt = In.DateTimeFormat.FullDateTimePattern;
       evtd = DateTime.ParseExact(dateString, fmt, provider);
       dtBillsEBN.Rows[i]["evtd"] = evtd; //Valid Till Date
       break;

       case 2: 
       //usa:"M/d/yyyy h:mm:ss tt"
       evtd = DateTime.ParseExact(dr.Cells[10].Value.ToString(), "M/d/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
       dtBillsEBN.Rows[i]["evtd"] = evtd; //Valid Till Date
       break;

       default:
       dtBillsEBN.Rows[i]["evtd"] = DBNull.Value;
       break;
     }
   }
   catch (Exception ex)
   {
     string msg = "Try Formating Valid Till Datein correct Format \nor\nchoose skip valid date update ";
     MessageBox.Show(ex.ToString());
   }

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

У меня были проблемы со строковыми датами и их преобразованием. Явное указание форматов даты для проверки помогло.

как то так.

public static string[] DateTimeFormats => new string[]
    {
        "dd-MM-yyyy",
        "MM/dd/yyyy",
        "MM-dd-yyyy",
        "d-MM-yyyy",
        "d-M-yyyy",
        "dd-M-yyyy",
        "dd/MM/yyyy",            
        "yyyy/MM/dd HH:mm",
        "dd-MM-yyyy hh:mm",
         "dd-MM-yyyy HH:mm",
         "MMMM yyyy"
    };

и затем, когда дело доходит до преобразования строковой даты.

internal static DateTime ChangeDateFormat(string dateAdded)
    {

        return ParseDateTime(DateTime.Now.ToString("dd-MM-yyyy hh:mm"), DateTimeFormats);
    }

 public static DateTime ParseDateTime(string dateTimeString, string[] formats)
    {
        try
        {
            DateTime dateStamp = DateTime.ParseExact(dateTimeString,
                formats, CultureInfo.CurrentCulture, DateTimeStyles.None);
            return dateStamp;
        }
        catch (Exception exe)
        {
            var message = $"dateTimeString: '{dateTimeString}', '{string.Join(",", formats)}'.";
            Utility.log(message);
            throw;
        }
    }
0 голосов
/ 30 октября 2018

Использовать DateTime.Parse ()

DateTime.Parse("30-10-2018 15:00:00")
...