我有一个文本框,用户应该以{{1}}格式输入日期,此日期在数据库中存储为dd/mm/yyyy
。
所以我希望用户以yyyy/mm/dd
格式输入日期,之后我想转换为dd/mm/yyyy
以便我可以查询数据库。
如何将用户输入日期yyyy/mm/dd
转换为dd/mm/yyyy
?
答案 0 :(得分:3)
快速而且可能很脏:
string reformattedDate = DateTime.ParseExact(textBox1.Text, "dd/MM/yyyy", null).ToString("yyyy/MM/dd");
当然,这假设文本框的内容将始终采用假定的格式,因此应该在之前检入它们以确保这一点。还有更安全的方式,不需要额外的检查:
DateTime result;
if(DateTime.TryParseExact(textBox1.Text, "dd/MM/yyyy", null, System.Globalization.DateTimeStyles.None, out result)
{
// Here you can safely use result
string reformattedDate = result.ToString("yyyy/MM/dd");
} else {
// Screw the user
}
这将尝试解析文本框的内容并通过out result
将其返回给您,如果成功,它将返回true。否则,您可以放心,输入不是假定格式,也不是有效日期。
另请注意,如果转换失败,ParseExact
会抛出ArgumentNullException
或ArgumentException
。
我有一个文本框,用户应该以dd / mm / yyyy格式输入日期,此日期在数据库中存储为yyyy / mm / dd。
显而易见的答案是:在使用字符串转换进行摔跤之前使用DateTimePicker和参数化查询。从长远来看,它会为你节省很多头痛。
答案 1 :(得分:0)
如果在数据库中存储日期,则将其存储为日期而不是字符串。那么你将只有一种格式:用户键入的内容。
使用DateTime.Parse(或TryParse,或“Exact”版本),您可以从键入的字符串转换为DateTime值。
答案 2 :(得分:0)
我想看看
和
DateTime.ToString Method 像dateTimeval.ToString("yyyy/MM/dd");
string dateString = "30/01/2010";
DateTime dateTimeVal;
if (DateTime.TryParseExact(dateString,"dd/MM/yyyy", null,DateTimeStyles.None,out dateTimeVal))
{
string newFormat = dateTimeVal.ToString("yyyy/MM/dd");
}
答案 3 :(得分:0)
假设您将日期存储在数据库的DateTime
字段中,日期实际上并未以dd/mm/yyyy
格式存储。
要使用日期:
string formattedDate = dateFromDb.ToString("yyyy/MM/dd");
要转换特定格式的date
字符串,您可以使用:
DateTime value;
if (DateTime.TryParseExact(
date,
"dd/MM/yyyy",
new CultureInfo("en-GB"),
System.Globalization.DateTimeStyles.None,
out value))
{
Console.Write(value.ToString("yyyy/MM/dd"));
}
else
{
Console.Write("Date parse failed!");
}
答案 4 :(得分:0)
此日期存储为yyyy / mm / dd in 数据库
我希望这不是真的。我希望您将日期存储为数据库中的datetime
值,而不是varchar
值。
如果将日期存储为datetime
值,则将日期字符串从一种格式转换为另一种格式没有意义,您应该将字符串解析为DateTime
值。
使用ParseExact
方法解析特定格式的字符串:
DateTime date = DateTime.ParseExact(theDateTextbox.Text, "dd'/'MM'/'yyyy", CultureInfo.InvariantCulture);
答案 5 :(得分:0)
以下是将DateTime转换为字符串的方法:
dateTime.ToString("dddd, dd MMMM yyyy");
Here are the different format of ToString
但我觉得最好使用DateTimePicker,你肯定有一个日期,用户可以用键盘输入日期。
答案 6 :(得分:0)
string input = "20/12/2010"; // dd/mm/yyyy
DateTime d;
if (DateTime.TryParseExact(input, "dd/mm/yyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out d))
{
string result = d.ToString("yyyy/mm/dd");
}
答案 7 :(得分:0)
试试这个。
string dt = DateTime.Parse(txtDate.Text.Trim()).ToString("yyyy/MM/dd", CultureInfo.InvariantCulture);