加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 将dd / MM / yyyy转换为yyyy / MM / dd?

发布时间:2020-12-15 20:03:33 所属栏目:百科 来源:网络整理
导读:我想将字符串’30 / 12/2012’转换为’2012/12/30′.我的应用程序设置为“en-CA”,但数据库默认接受yyyy / MM / dd. How can I do this without depending on the current culture info set at server? 解决方法 正如所有评论所说的那样,但到目前为止没有一
我想将字符串’30 / 12/2012’转换为’2012/12/30′.我的应用程序设置为“en-CA”,但数据库默认接受yyyy / MM / dd.

How can I do this without depending on the current culture info set
at server?

解决方法

正如所有评论所说的那样,但到目前为止没有一个答案说过:不要把它作为字符串传递给数据库.

尽可能早地解析您收到的任何文本,然后使用DateTime在其他任何地方表示它,包括如何通过参数化SQL1将其发送到数据库.这适用于所有类型的值:尽快将其转换为数据的“自然”类型,并尽可能长时间保持在自然表示中.日期不是字符串,如果你确实需要,你应该只将其转换为字符串 – 理想情况是在将它显示给用户之前.

解析可以使用DateTime.ParseExact或DateTime.TryParseExact来完成,具体取决于这是“可疑”数据(例如来自用户)还是应该真正正确的数据,并且异常是对不可解析值的最恰当反应.我建议你使用自定义格式字符串传递CultureInfo.InvariantCulture.例如:

DateTime date = DateTime.ParseExact(text,"dd/MM/yyyy",CultureInfo.InvariantCulture);

(如果你做了很多日期/时间工作,你可能还想考虑使用我的Noda Time project,它允许你以更丰富的方式表达价值 – 在这种情况下你可能会使用LocalDate.)

1如果您尚未使用参数化SQL,而是将值直接烘焙到SQL中,则问题比日期/时间转换更大.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读