字符串到日期解析

时间:2014-04-08 12:40:47

标签: c# parsing datatable

我收到一个字符串,我想将该字符串解析为日期,并希望将其存储在DataTable中。

字符串可以是格式 1-“2014/23/10” 2-“2014-23-10”

{
string st="2014/23/10";
string st="2014-23-10";
}

并附上时间。

有什么想法让它变得可能吗?

5 个答案:

答案 0 :(得分:1)

由于两者都不是标准日期和时间格式,您可以使用DateTime.ParseExact方法;

string st = "2014/23/10";
string st1 = "2014-23-10";
var date = DateTime.ParseExact(st,
                   "yyyy/dd/MM", CultureInfo.InvariantCulture);
var date1 = DateTime.ParseExact(st1,
                   "yyyy-dd-MM", CultureInfo.InvariantCulture);

输出将是;

10/23/2014 12:00:00 AM
10/23/2014 12:00:00 AM

这里有 demonstration

当然,这些输出取决于您当前的文化主题。

如果您希望将DateTime格式化为字符串表示形式,则可以使用DateTime.ToString(string) overload作为字符串格式接受。

由于您有多种格式,因此可以使用DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) overload将格式作为字符串数组。

var formats = new []{"yyyy-MM-dd", "yyyy/MM/dd"};
DateTime dt;
if(DateTime.TryParseExact(st, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))
{
   //
}
else
{
  //
}

答案 1 :(得分:1)

DateTime.ParseExactDateTime.TryParseExact在这里是合适的 - 两者都接受多个格式字符串,这是您在这种情况下所需要的。确保指定不变文化,以便不会影响特定于文化的设置(例如默认日历)影响结果:

string[] formats = { "yyyy-MM-dd", "yyyy/MM/dd" };
DateTime date;
if (DateTime.TryParseExact(input, formats,
                           CultureInfo.InvariantCulture,
                           DateTimeStyles.None, out date))
{
    // Add date to the DataTable
}
else
{
    // Handle parse failure. If this really shouldn't happen,
    // use DateTime.ParseExact instead
}

如果输入来自用户(因此"预期"可能会被破坏,而不会在系统中的任何位置显示错误),则应使用TryParseExact。如果解析失败表明存在一个应该简单地中止当前操作的重大问题,请改用ParseExact(它会在失败时抛出异常)。

答案 2 :(得分:0)

如果您需要灵活,请转换为DateTime DateTime.TryParseExact();甚至DateTime.Parse。然后你可以根据自己的喜好将其格式化!

请参阅:http://msdn.microsoft.com/en-us/library/ms131044(v=vs.110).aspx

答案 3 :(得分:0)

试试这个:

DateTime.Parse(st);

如果以上行不适合您,请在下面添加cultrureInfo:

DateTime.ParseExact(st,"yyyy/dd/MM", CultureInfo.InvariantCulture);

答案 4 :(得分:0)

尝试

DateTime.Parse(st, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal);

根据您的要求设置DateTimeStyles。