2017-02-12 32 views
-2

Я рассмотрел много вопросов и ответов здесь относительно преобразования формата Datetime. Почти все связаны с преобразованием формата в вывод в виде строки.Как преобразовать DateTime в dd/MM/yyyy в DateTime в dd-MM-yyyy?

Теперь я хочу, чтобы преобразовать переменную DateTime в локальном формате (дд/мм/YYY) к переменной DateTime в ДД-ММ-ГГГГ формат для предоставления его в качестве входного параметра для метода API.

Я пробовал несколько методов, таких как упоминание InvariantCulture во время разбора и все. Даже попытался использовать ивритский календарь для установки текущей культуры. Все возвращает DateTime в локальном формате (dd/MM/yyyy) и при предоставлении переменной datetime API возвращается сообщение об ошибке, чтобы предоставить дату и время только в формате dd-MM-yyyy.

Есть ли способ конвертировать переменную datetime в определенный формат?

Edit:

Есть ли способ преобразовать DateTime в определенный формат? Я использую некоторые снимки экрана ниже для справки.

Я использую сторонний API, и я не хочу раскрывать методы.

Method structure

Error response from the API method

Теперь я надеюсь, что теперь путь для задания формата переменной DateTime.

+1

Можете ли вы поделиться примером, когда вы отправить DateTime в API? Какой DateTime является DateTime, вы не можете изменять тип. Наверное, вы пропустили что-то еще. – kat1330

+0

Поделитесь своим кодом. Таким образом, он может быть изменен. –

+6

Структура 'DateTime' не имеет понятия * format *. Это когда вы конвертируете его в/из строки, которая имеет смысл. –

ответ

1

Прежде всего - DateTime не имеет некоторые форматы. string, который представляет DateTime, может иметь форматы.

Для преобразования DateTime в определенный формат для string вы можете использовать ToString() метод:

DateTime dt = DateTime.Now; 
string date = dt.ToString("dd-MM-yyyy"); 

Для синтаксического анализа string к DateTime вы можете использовать ParseExact() метод:

string date = "02/03/2017"; 
DateTime dt = DateTime.ParseExact(date, "dd/MM/yyyy", CultureInfo.InvariantCulture); 

or 

string date = "02-03-2017"; 
DateTime dt = DateTime.ParseExact(date, "dd-MM-yyyy", CultureInfo.InvariantCulture); 

ДЛЯ EDIT:

Convert.ToDateTime() без CultureInfo пытается преобразовать string в DateTime используя вашу культуру PC. Если вы хотите использовать Convert.ToDateTime() использовать перегруженный метод, которые принимают string и культуру:

DateTime dt = Convert.ToDateTime(someDate, CultureInfo.InvariantCulture); 
+0

Спасибо, я надеюсь, что нет способа указать формат даты и времени. –

+0

@MONUTHOMAS Нет ** ** формат даты и времени, в зависимости от вашего контекста существует почти неограниченный формат. Сеанс пользователя имеет информацию о культуре и используется для форматирования по умолчанию. Если вам нужен конкретный формат для определенного контекста, определите этот формат для этого контекста и отформатируйте дату и время. BTW Значение raw datetime хранится в Int64 (DateTime.Ticks) –

+0

@SirRufo Спасибо за информацию. Я также попытался установить текущую культуру потока на иврит, поскольку культура иврита имеет необходимый формат. Но это также не сработало для меня, поскольку это вернуло дату в местном формате. –

0

Я использую метод ToString и даю pattren для параметра.

, например: DateTime.Now.ToString ("дд-ММ-гггг")