【发布时间】:2017-02-22 21:26:03
【问题描述】:
我有一个 SQL Server 表,其中有一个名为 ProductionDate 的 DateTime 字段。该字段的格式为:2015-06-29 00:00:00.000
我有一个 C# WinForm 应用程序选择这个日期:
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 值填写第二个表格。
这是表单的样子:
我正在尝试使用调用函数时获得的prodDate 参数填充Year、Month 和Day 字段。
这是被调用的函数:
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
我尝试这一切的原因是,我不想在函数中的 dateProd 变量上使用substring,因为日期可以是1-1-2015 或10-10-2015。格式不是mm-dd-yyyy 00:00:00.000,而是m-d-yyyy 00:00:00.000
所以,子字符串似乎很愚蠢。所以我正在尝试将字符串转换为日期时间变量并执行DatetimeVariable.Year、DatetimeVariable.Date 和DatetimeVariable.Month。
编辑 1:遗漏了几行关于如何从表中选择日期的代码。
【问题讨论】:
-
"这个字段的格式是:2015-06-29 00:00:00.000" - 你说它是一个日期时间字段,在这种情况下它没有“格式” - 当你获取值,你应该只得到一个日期时间,而不是一个字符串......
-
var prodDate获取该日期的此值:6-29-2015 00:00:00 -
你打电话给
ToString()。我建议你停止这样做。 -
你为什么想要将它分配给一个字符串变量?为什么您希望您的
EditBOL构造函数接受字符串而不是DateTime参数?您基本上是在格式化DateTime,然后再次对其进行解析......这更简单,只是一开始就不将其作为单个字符串。 (然后您可以单独格式化日/月/年。) -
@JonSkeet 你是对的。当他们选择多个日期时,今天在另一个部门中以我的方式做这件事是一个问题。必须按照你建议的方式去做。谢谢。
标签: c# sql-server winforms sql-server-2012