【问题标题】:Help getting GB - US date conversions working in asp.net vb帮助在 asp.net vb 中获得 GB - 美国日期转换
【发布时间】:2010-10-18 12:55:03
【问题描述】:

我的网站在 web.config 中设置为 en-GB。我在页面上有一个日历扩展文本框控件,允许用户选择日期,GB 格式为字符串(DD/MM/YYYY)。在插入数据库之前,我需要将其转换为美国日期时间。

解决方案:(MM/dd/yyyy hh:mm:ss)

我讨厌星期一。像往常一样想太多。

【问题讨论】:

  • 您要执行什么转换?无论您如何格式化 ToString 输出,DateTime 都表示相同的日期和时间。
  • 我在 web.config 中设置为 GB 文化的网站上有一个日历。这会得到像 DD/MM/YYYY 这样的日期。 Db 服务器设置为 US,因此希望日期时间为 MM/DD/YYYY 00:00:00
  • 我同意卢克的观点,即“我也尝试过”应该有效。 @bookingdate 参数的 DbType 是什么?它在哪一行上失败了——解析还是参数集? (你可以在 VB.NET 中使用DateTime.Parse() 代替吗?)
  • 哦,我看到您已经在另一个(重复?)问题stackoverflow.com/questions/3958134/… 上尝试过 DateTime.Parse()
  • 我不确定我会拿出你拥有的所有代码示例。这使得理解答案和 cmets 变得非常困难,因为它们指的是问题中不再存在的东西。

标签: asp.net datetime date culture


【解决方案1】:

如果@bookingdate 已经是DateTime 参数,则不要理会它。数据库不关心日期的字符串表示形式 - 无论您在调用 ToString 时决定如何格式化它,基础日期/时间都是相同的。

(即,只需注释掉问题中显示的整个代码块,看看是否可行。)

关于您最近的编辑和 cmets,我怀疑您只需要执行以下操作:

Dim dt As DateTime = DateTime.ParseExact(InputBookingdatesingleday.Text,
                                         "dd/MM/yyyy",
                                         CultureInfo.GetCultureInfo("en-GB"))

command.Parameters.AddWithValue("@bookingdate", dt)

【讨论】:

  • 我同意——他只想要command.Parameters("@bookingdate").Value = gbDT——但不幸的是,这并不能解释他的解析错误。 [其实他只是加了一句'我也试过'这个]
  • 我尝试过简化并用代码编辑了问题
  • @Rup:他甚至不需要那个:gbDT 首先是从@bookingdate 解析的。整个代码块都是多余的。
  • D'oh,是的,我从表单中读取第一个解析并用它填充查询。那么 Phil 你从哪里获得表格中的数据以及它是什么类型的? @bookingdate 是如何设置的?通过来自控件的数据绑定?该控件是如何设置的?
  • @Phil:InputBookingdatesingleday.Text 的确切值是什么导致了该错误?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-17
  • 1970-01-01
  • 1970-01-01
  • 2011-06-21
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多