2015-11-26 3 views
0

У меня есть строкаПреобразование строки дд/мм/ууу до гггг-мм-дд чч: мм: сс

string str = "26/01/2015"; 

мне нужно преобразовать его в DateTime, как 2015-01-26 00:00:00.000, так что я могу сохранить его в базе данных.

То, что я пытался до сих пор

DateTime.ParseExact(str, "dd/MM/yyyy", CultureInfo.InvariantCulture)` 

и я получаю значение как '26/01/2015 12:00:00 AM'.

Но мне это нужно как 2015-01-26 00:00:00.000.

Возможно ли это? Любая помощь приветствуется

+1

Обратите внимание, что ваш пост [XY-проблема] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) - в то время как точный вопрос ответил нет реальная ценность для вас в ответах ... –

+0

Итак @AlexeiLevenkov, который вы предлагаете мне? –

+0

Похоже, поиск https://www.bing.com/search?q=C%23+store+datetime+sql должен приводить хорошие примеры, например: http://stackoverflow.com/questions/12563795/sql-server- Дата и время-и-с-острый DateTime. К сожалению, я не думаю, что есть канонический ответ о значении 'DateTime' и том, как он отображается в отладчике /' ToString'/других текстовых представлениях, которые могут быть проблемой, с которой вы действительно сталкиваетесь. –

ответ

0

Вы должны преобразовать его в строку, как это (если вы хотите его как отформатированная строка):

var parsed = DateTime.ParseExact(str, "dd/MM/yyyy", CultureInfo.InvariantCulture); 
var formatted = parsed.ToString("yyyy-MM-dd HH:mm:ss.fff"); 

Я полагаю, вы хотите отформатированы DATETIME строки.

+0

Его работа отлично. Но мы анализируем как строку для поля datetime. Правильно ли это? –

+0

@ShreyasBhandimatt Используете ли вы ORM для хранения данных в базе данных? Если вы это сделаете, вы можете сохранить свое время, как есть. Поэтому вам не нужно форматировать строку. – wudzik

0

Вы можете попробовать это:

string outputFormat = DateTime.ParseExact("26/01/2015", "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd HH:mm:ss.fff"); 

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

0

Вы преобразовать его в строку и передать параметры к функции ToString(), как описано в these standard в соответствии с вашими потребностями.

Вы можете использовать

DateTime d = DateTime.Now; 
d.ToString("U"); 
+0

Почему 'U' спецификатор? Это _may_ порождает разные результаты для разных культур. –

1

когда у вас есть объект DateTime можно просто обновить базу данных, потому что это наиболее точным. Что для вас важно на выходе, когда вы возвращаете его из базы данных, это объект datetime, а затем создайте свой .ToString для его форматирования.

0

Не нужно беспокоиться о преобразовании даты и времени, если вы используете параметр для хранения данных, подобных приведенному ниже.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Data; 
using System.Data.SqlClient; 

namespace ConsoleApplication58 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string connStr = "Enter Your Conneciton String Here"; 
      string SQL = "INSERT INTO Table1 (Time_Col) VALUES ('@MyTime');"; 

      SqlConnection conn = new SqlConnection(connStr); 

      SqlCommand cmd = new SqlCommand(SQL, conn); 

      cmd.Parameters.Add("@MyTime", SqlDbType.DateTime); 
      DateTime now = DateTime.Now(); 
      cmd.Parameters["@MyTime"].Value = now; 

      cmd.EndExecuteNonQuery(); 

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