如何将字符串转换为mysql日期时间格式?

时间:2015-02-11 21:37:08

标签: c# mysql datetime

我在将基于字符串的日期时间格式转换为mysql日期时间格式时遇到了困难。

我尝试了以下

str latesttime =  "2\/11\/2015 8:04:06 PM";
string formatForMySql = Convert.ToDateTime(latestscreentime);

未转换。也试过解析 而且

SimpleDateFormat from = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss tt");
SimpleDateFormat to = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = from.parse(latestscreentime);       // 01/02/2014
String mysqlString = to.format(date); 

这里的错误是

  

' SimpleDateFormat的'无法找到(你错过了使用   指令或程序集引用?)

但我下载vjslib.dll并添加using SimpleDateFormat;

那么任何人都可以帮助我解决这个错误吗?

2 个答案:

答案 0 :(得分:0)

首先将字符串更改为DateTime

var latesttime = @"2/11/2015 8:04:06 PM";
DateTime dateValue = DateTime.Parse(latesttime);

现在你可以做到,

var sqlDateFormat= dateValue.ToString("yyyy-MM-dd HH:mm");

答案 1 :(得分:0)

我知道这有点太晚了,但我想指出其他一些观点......

首先,无法拥有string;

string latesttime = "2\/11\/2015 8:04:06 PM";

因为它是regular string literal,所以您需要转义\字符,因为它是escape sequence字符。您可能希望将其作为"2\\/11\\/2015 8:04:06 PM"转义或使用逐字字符串文字作为@"2\/11\/2015 8:04:06 PM"

我认为您的Convert.ToDateTime() 使用该字符串,因为没有CultureInfo d\\/MM\\/yyyy h:mm:ss tt格式为standard date and time format

您可以使用DateTime.TryParseExact method之类的自定义日期和时间解析来代替;

string s = @"2\/11\/2015 8:04:06 PM";
DateTime dt;
if(DateTime.TryParseExact(s, @"d\\/MM\\/yyyy h:mm:ss tt", 
                          CultureInfo.InvariantCulture,
                          DateTimeStyles.None,out dt))
{
    Console.WriteLine(dt);
}

由于\是自定义日期和时间解析中的转义字符,因此您需要使用双斜杠转义为\\

.NET Framework中没有SimpleDateFormat类。我认为你正在混合Java SimpleDateFormat class

在.NET Framework中,当您尝试获取DateTime的字符串表示时,通常使用 DateTime.ToString method。解析后,您可以执行这些操作;

dt.ToString("dd/MM/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
// Result will be 02/11/2015 08:04:06 PM

dt.ToString("yyyy-MM-dd HH:mm:ss");
// Result will be 2015-11-02 20:04:06

我在第一个示例中使用InvariantCulture作为IFormatProvider因为The "/" custom format specifier具有特殊含义,因为将我替换为当前文化或提供的文化日期分隔符。这就是为什么它可能在不同的文化中产生不同的结果。