题
我有一种情况需要将文本数据转换为日期。
我使用了以下代码来做到这一点!
string s = textBox1.Text;
if (String.IsNullOrEmpty(s))
{
textBox2.Text = "Please enter any date.";
}
else
{
DateTime dt = DateTime.Parse(s);
string day = dt.Day.ToString();
string month = dt.Month.ToString();
string year = dt.Year.ToString();
s = day + "/" + month + "/" + year;
textBox2.Text = s;
}
这只会更改以下数据格式。
10/10/09 或 10/10/2009----转换日期-----10/10/2009
12/13/2009 或 12/13/9----转换日期-----12/13/2009
10/16----转换日期------------------------16/10/2009
2009/12/10----转换日期------------------10/12/2009
以下格式不会更改为 dd/mm/yyyy
16/10-dd/毫米
060209 或 06022009 ddmmyyyy
13122009 mmddyyyy
20091213年年月日
20091312年年月日
20.07.2009/20.07.2009/20-07-2009/20-07-09
谁能帮我解决这个问题。我对 c# 很陌生
解决方案 7
感谢所有支持和指导下,你PPL了。 我已经找到了解决办法,以我的查询
一个新文本框被显式地创建,并使用ParseExact起作用DateTime值是由转换。
下面是其中使用形式替代文字HTTP://img146.imageshack页面没有自动跳转/ img146 / 2107 / form.jpg
代码编写以下
private void button1_Click(object sender, EventArgs e)
{
string s = textBox1.Text;
string DFF = textBox3.Text;
//To check whether field is empty
if (String.IsNullOrEmpty(s))
{
MessageBox.Show("Please enter correct date");
textBox2.Text = "Enter correct date";
}
else
{
DateTime dt = DateTime.ParseExact(s, DFF, null);
textBox2.Text = dt.ToShortDateString();
}
}
这个代码将给出输出用于所有日期类型:
DD.MM.YYYY或DD-MM-yyyy或DD \毫米\ YYYY
MM.DD.YYYY或MM-DD-yyyy或毫米\ DD \ YYYY
YYYY.MM.DD或YYYY-MM-DD或yyyy \毫米\ DD
yyyy.dd.mm或yyyy-DD-MM或YYYY-MM-DD
DDMMYY或MMDDYY或yyddmm
DD \毫米或毫米\ DD或dd.mm或MM.DD
其他提示
解析日期比这更复杂一点,我害怕。这将取决于你的文化/国家设置。看看重载 DateTime.Parse ..
另外请注意,当你输出你的约会,你可以/应该也使用的的String.Format 时,像这样:
String.Format("{0:dd/MM/yyyy}", dt)
您必须编写自己的分析对所有非标准格式。另外格式,如“年月日”和“yyyyddmm”将是有问题的,因为你将需要用户指定什么输入格式或者你只是在错误的转换在某些情况下。
有关其余看一看 DateTime.Parse (也由Benjol提到的)它应该解决问题为在世界各地使用的通用格式。
DateTime.Parse不可能解析您指定的所有组合。我建议你先试试DateTime.TryParse,看看输入的日期是语法分析。如果返回false,则使用ParseExact(或更好,但TryParseExact)来检查针对每个预期日期格式。
不幸的是,我不认为有一个尺寸适合所有人的解决了这个问题。
您可以使用 DateTime.ParseExact
例如:
DateTime.ParseExact("20090823", "yyyyMMdd", null);
DateTime.ParseExact("16/10", "dd/MM", null);
编辑:使用 日期时间.TryParse (或者 日期时间.TryParseExact) 来验证输入的日期。
DateTime date;
string error = "";
if (!DateTime.TryParse("12978434", out date))
{
error = "Invalid date";
}
时,你有可能使用“的DatePicker” /日历控件,而不是一个TextBox的?
例如 AJAX工具包日历控制
这将消除需要你必须处理每一个可能的日期格式的用户可能会指定。它还提供了一个更好的用户体验,恕我直言。
<强> OP注释后更新:强>
作为其他的海报所建议的,我会用DateTime.TryParse作为第一通,以处理任何所支持的标准格式的日期字符串。然后,你就需要在DateTime.ParseExact后备每个支持非标准格式。最后,我想你需要标记任何非日期字符串或unspported日期格式错误。