У меня есть таблица SQL Server с полем DateTime, которое называется ProductionDate
. Формат этого поля: 2015-06-29 00:00:00.000
У меня есть C# WinForm приложение, которое выбирает эту дату с этим:Получить поле DateTime из таблицы и получить год, месяц и день на C#
string productionDate = String.Empty;
var prodDate = pallets.Select(r => r.Production_Date);
if (prodDate.Count() == 1)
{
productionDate = prodDate.First().ToString();
}
Теперь эта форма вызывает вторую форму с этой линией:
EditBOL bol = new EditBOL(BOL, Batch, productionDate)
Что Я пытаюсь это сделать, заполните вторую форму значением prodDate
.
Это то, что форма выглядит следующим образом:
Я пытаюсь заполнить Year
, Month
и Day
полей с помощью prodDate
аргумента он получает, когда функция вызывается.
Это функция, которая вызывается:
public EditBOL(string BOL, string Batch, string prodDate)
{
InitializeComponent();
txtBOL.Text = BOL;
txtBatch.Text = Batch;
//Code to breakdown prodDAte variable comes here!!
}
Я пробовал много различных методов. Я попытался
1. DateTime.Parse(prodDate, "yyyy-mm-dd", culture)
2. DateTime.Now.ToString("yyyy-MM-dd h:mm tt");
3. DateTime dateVariable = prodDate??DateTime.MinValue
Причина, я попытался все это, я не хочу использовать substring
на переменную dateProd в функции, потому что дата может быть 1-1-2015
или 10-10-2015
. Формат НЕ mm-dd-yyyy 00:00:00.000
, это m-d-yyyy 00:00:00.000
Итак, подстрока просто кажется глупой. Поэтому я пытаюсь преобразовать строку в переменную datetime и делать DatetimeVariable.Year
, DatetimeVariable.Date
и DatetimeVariable.Month
.
EDIT 1: Пропущено несколько строк кода о том, как дата выбрана из таблицы.
«Формат этого поле: 2015-06-29 00: 00: 00.000 »- вы сказали, что это поле DateTime, и в этом случае у него нет« формата », - когда вы получаете значение, вы должны просто получить DateTime, а не строку ... –
'var prodDate' получает это значение для этой даты: ' 6-29-2015 00: 00: 00' –
Ну, вы вызов 'ToString()'. Я предлагаю вам прекратить это делать. –