我想将字符串'30/12/2012'转换为'2012/12/30'.我的应用程序设置为"en-CA",但数据库默认接受yyyy/MM/dd.
如何在不依赖服务器上设置的当前文化信息的情况下执行此操作?
Jon*_*eet 12
正如所有评论所说的那样,但到目前为止没有一个答案说过:不要把它作为字符串传递给数据库.
尽可能早地解析您收到的任何文本,然后使用DateTime它在其他任何地方表示它,包括如何通过参数化SQL 1将其发送到数据库.这适用于所有类型的值:尽快将其转换为数据的"自然"类型,并尽可能长时间保持在自然表示中.日期不是字符串,如果你确实需要,你应该只将其转换为字符串 - 理想情况是在将它显示给用户之前.
解析可以使用DateTime.ParseExact或DateTime.TryParseExact取决于这是"可疑"数据(例如来自用户)还是应该真正正确的数据,并且异常是对不可解析值的最恰当反应.我建议你传入CultureInfo.InvariantCulture你的自定义格式字符串.例如:
DateTime date = DateTime.ParseExact(text, "dd/MM/yyyy",
CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
(如果您做了很多日期/时间工作,您可能还想考虑使用我的Noda Time项目,它允许您以更丰富的方式表达价值 - 在这种情况下您可能会使用LocalDate.)
1如果您尚未使用参数化SQL,而是将值直接烘焙到SQL中,则问题比日期/时间转换更大.
| 归档时间: |
|
| 查看次数: |
8574 次 |
| 最近记录: |