我尝试将日期时间转换为字符串并返回,但使其适用于所有文化。
我基本上有一个文本框(tbDateTime)和一个标签(lbDateTime)。该标签告诉用户,软件期望以哪种格式输入 tbDateTime。文本框的输入将用于 MySQL 命令。
目前它的工作原理如下:
lbDateTime.Text = "DD.MM.YYYY hh:mm:ss"; // I live in germany
DateTime date = Convert.ToDateTime(tbDateTime.Text);
String filter = date.ToString("yyyy-MM-dd HH:mm:ss");
现在我的问题是:
- 是否可以根据当前区域性确定 lbDateTime.Text 的格式字符串?
- Convert.ToDateTime 函数使用哪种格式?
我希望你可以帮助我。我这里实际上没有电脑来测试不同的文化,所以我很担心我会做错什么。
而不是使用Convert.ToDateTime
方法你可以使用DateTime.Parse
or DateTime.ParseExact
方法。两者都允许您传递一种文化,告诉您您期望如何格式化日期。
The DateTime.ParseExact
方法还允许您指定所需的格式,因此您可以使用此方法或多或少地解析任何格式。
Edit:
关于Convert.ToDateTime
。文档说解析时使用当前区域性:http://msdn.microsoft.com/en-us/library/xhz1w05e.aspx http://msdn.microsoft.com/en-us/library/xhz1w05e.aspx
当前的文化可以使用System.Threading.Thread.CurrentThread.CurrentCulture
财产。
Edit2:
哦。您可能还想使用DateTime.TryParse
and DateTime.TryParseExact
如果您不确定给定的格式是否无效。
Edit3:
这里有很多编辑...我看到您想要确定与用户输入的日期匹配的区域性字符串。没有保证在这里起作用的通用解决方案。例如,假设用户输入了日期 01.02.11。无法确定该日期是否为日.月.年、月.日.年或年.月.日等。
您能做的最好的事情就是列出预期的输入文化,并从最有可能的文化开始,并尝试使用它来解析日期。如果失败,您可以尝试第二个最有可能的方法,依此类推......
但这确实不推荐。要么为用户提供预期的格式,要么使用日期输入框更好,以确保您以适当的格式收到所选日期。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)