2015-02-11 5 views
0

Я столкнулся с трудностью преобразования формата даты и времени на основе строки в формат даты mysql.Как преобразовать строку в формат mysql datetime?

Я попробовал следующее

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;

S o может ли кто-нибудь помочь мне в решении этой ошибки?

ответ

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"); 
+0

Большое спасибо, что помогло решить проблему. –

0

Я знаю, что это немного слишком поздно, но я хочу указать некоторые другие пункты также. .

Прежде всего, вы не можете имеют string as;

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

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.ToString method используется при попытке получить строковое представление вашего DateTime.После синтаксического анализа вы можете сделать это;

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 имеет особое значение, как заменить меня с текущей культуры или дата поставки культуры сепараторе. Вот почему это может привести к разным результатам в разных культурах.

+1

спасибо, что я ясно понял мою проблему. –

+0

@rajaking Рад помочь. –

Смежные вопросы