C# 从表中获取DateTime字段,并在C上获取年、月和日#
我有一个SQL Server表,它有一个名为C# 从表中获取DateTime字段,并在C上获取年、月和日#,c#,sql-server,winforms,sql-server-2012,C#,Sql Server,Winforms,Sql Server 2012,我有一个SQL Server表,它有一个名为ProductionDate的日期时间字段。此字段的格式为: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) { productionDat
ProductionDate
的日期时间字段。此字段的格式为: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=新的EditBOL(bol、批次、生产日期)
我想做的是,用prodDate
值填写第二个表单。这就是表单的外观:
我试图使用调用函数时获得的
prodDate
参数来填充年
、月
和日
字段。这是被调用的函数:
public EditBOL(string BOL, string Batch, string prodDate)
{
InitializeComponent();
txtBOL.Text = BOL;
txtBatch.Text = Batch;
//Code to breakdown prodDAte variable comes here!!
}
我试过很多不同的方法。我试过了1. <代码>日期时间.解析(prodDate,“yyyy-mm-dd”,区域性)
2. <代码>DateTime.Now.ToString(“yyyy-MM-dd h:MM-tt”)代码>
3.
DateTime-dateVariable=prodDate??DateTime.MinValue
我尝试这一切的原因是,我不想在函数中的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
编辑1:缺少几行关于如何从表中选择日期的代码 如果您坚持要分析prodDate
,请尝试以下操作:
public EditBOL(string BOL, string Batch, string prodDate)
{
InitializeComponent();
txtBOL.Text = BOL;
txtBatch.Text = Batch;
//Code to breakdown prodDAte variable comes here!!
string[] tokens = prodDate.Split(' ')[0].Split('-');
yearTextBox.Text = tokens[0];
monthTextBox.Text = tokens[1];
dayTextBox.Text = tokens[2];
}
我更喜欢这种方法:
public EditBOL(string BOL, string Batch, string prodDate)
{
InitializeComponent();
txtBOL.Text = BOL;
txtBatch.Text = Batch;
//Code to breakdown prodDAte variable comes here!!
DateTime date = Convert.ToDateTime(prodDate);
yearTextBox.Text = date.Year.ToString();
monthTextBox.Text = date.Month.ToString();
dayTextBox.Text = date.Day.ToString();
}
如果您坚持要分析prodDate
,请尝试以下操作:
public EditBOL(string BOL, string Batch, string prodDate)
{
InitializeComponent();
txtBOL.Text = BOL;
txtBatch.Text = Batch;
//Code to breakdown prodDAte variable comes here!!
string[] tokens = prodDate.Split(' ')[0].Split('-');
yearTextBox.Text = tokens[0];
monthTextBox.Text = tokens[1];
dayTextBox.Text = tokens[2];
}
我更喜欢这种方法:
public EditBOL(string BOL, string Batch, string prodDate)
{
InitializeComponent();
txtBOL.Text = BOL;
txtBatch.Text = Batch;
//Code to breakdown prodDAte variable comes here!!
DateTime date = Convert.ToDateTime(prodDate);
yearTextBox.Text = date.Year.ToString();
monthTextBox.Text = date.Month.ToString();
dayTextBox.Text = date.Day.ToString();
}
您只需使用DateTime.ParseExact()
:
您只需使用DateTime.ParseExact()
:
“此字段的格式为:2015-06-29 00:00:00.000”-您说它是DateTime字段,在这种情况下它没有“格式”-当您获取值时,您应该只获取DateTime,而不是字符串…var prodDate
获取该日期的此值:6-29-2015 00:00:00
您正在调用ToString()
。我建议您停止这样做。为什么要将其分配给字符串变量?为什么希望EditBOL
构造函数接受字符串而不是DateTime
参数?您基本上是格式化一个DateTime
,然后再次解析它。。。更简单的是,首先不要将其作为单个字符串。(然后您可以单独设置日/月/年的格式。)@JonSkeet您是对的。今天在另一个部门,当他们选择了不止一个日期时,我这样做是一个问题。必须按照你建议的方式做。谢谢。“这个字段的格式是:2015-06-29 00:00:00.000”-你说它是一个日期时间字段,在这种情况下它没有“格式”-当你获取值时,你应该只获取一个日期时间,而不是字符串…var prodDate
获取该日期的值:6-29-2015 00:00
你正在调用ToString()
。我建议您停止这样做。为什么要将其分配给字符串变量?为什么希望EditBOL
构造函数接受字符串而不是DateTime
参数?您基本上是格式化一个DateTime
,然后再次解析它。。。更简单的是,首先不要将其作为单个字符串。(然后您可以单独设置日/月/年的格式。)@JonSkeet您是对的。今天在另一个部门,当他们选择了不止一个日期时,我这样做是一个问题。必须按照你建议的方式做。谢谢。它说索引超出了数组的范围。如果我理解这段代码的作用,我会修复它。您能帮忙吗?我使用您的示例作为输入2015-06-29 00:00:00.000
,得到了正确的结果。您正在测试哪个输入(prodDate
)?再次检查问题,我编辑了用于从数据库获取生产日期值的代码。很抱歉,我又测试了一次,这两种方法都可以使用。更好的方法是将值接受为DateTime
,而不是将其从DateTime
转换为string
,然后将string
解析回DateTime
。它表示索引超出了数组的范围。如果我理解这段代码的作用,我会修复它。您能帮忙吗?我使用您的示例作为输入2015-06-29 00:00:00.000
,得到了正确的结果。您正在测试哪个输入(prodDate
)?再次检查问题,我编辑了用于从数据库获取生产日期值的代码。我很抱歉。我再次测试了它,它应该可以同时使用这两种方法。更好的方法是将值接受为DateTime
,而不是将其从DateTime
转换为string
,然后将string
解析回DateTime
。忘记了,我也试过了。但是,我没有尝试将格式存储在单独的变量中,并在ParseExact中使用它。我现在就要试一试。感谢you@CrazyCucumber,我编辑了格式变量,请参见编辑后的答案。忘了提及,我也试过了。但是,我没有尝试将格式存储在单独的变量中,并在ParseExact中使用它。我现在就要试一试。感谢you@CrazyCucumber,我编辑了格式
变量,请参见编辑的答案。