【问题标题】:Ruby on Rails / SQL Server datetimeRuby on Rails / SQL Server 日期时间
【发布时间】:2015-11-18 10:48:49
【问题描述】:

我在日期时间方面遇到了一些问题。我的本地时区是UTC +0800

在 SQL Server 中,当我打开 SQL Server Management Studio Express 时,日期时间显示为13/8/2015 9:05:00 AM

使用默认时区的 Rails,我得到的时间角度为“2015-08-13T09:05:00.000Z”

当我执行$filter('date')(date, "HH:mm Z") 时,我得到17:05 +0800

当我执行$filter('date')(date, "HH:mm Z", "+0800") 时,我仍然得到17:05 +0800

我尝试将 Rails 时区更改为 UTC +0800,我得到的时间是 2015-08-13T17:05:00.000+08:00

当我执行$filter('date')(date, "HH:mm Z") 时,我得到17:05 +0800

当我执行$filter('date')(date, "HH:mm Z", "+0800") 时,我仍然得到17:05 +0800

我很困惑。如何获取 $filter 结果以显示时间9:05

编辑:我观看了 rails cast 视频并尝试了 d.AssignedDateTime_before_type_cast,它给了我2015-08-13 09:05:00 UTC。所以问题是 Rails 认为存储在 SQL Server 数据库中的日期时间是 UTC。那个日期时间是从 Microsoft ERP 系统给我的,有什么办法可以让 Rails 不认为它是 UTC 时间?更改 application.rb 中的配置时区不起作用。

【问题讨论】:

  • 所以这根本不是一个angualrjs问题吗?在他的情况下,请编辑您的问题标题和标签。

标签: ruby-on-rails sql-server date datetime


【解决方案1】:

application.rb 中更改config.active_record.default_timezoneconfig.time_zone 有效。

【讨论】:

    【解决方案2】:

    你看过这个Railscast吗?它可能会帮助您使用正确的时区配置 Rails。

    一旦你有正确的时间从数据库中出来并在你的 JSON 响应中呈现,我希望 Angular 问题应该得到解决。

    【讨论】:

    • 谢谢,会看一下,所以是从数据库中出来并在我的 JSON 响应中呈现的时间错误?
    • 从您的问题中很难判断,但我会先确保 Rails 呈现您期望的日期时间格式,然后再使用 Angular 的日期过滤器对其进行格式化。
    • 有人对此投了反对票(由此也为他们自己恢复了-1)在stackoverflow中,当答案有用时,您会投票赞成。如果它们没有用,你就忽略它们。只有当它们存在严重问题时,您才会对它们投反对票。在这种情况下,也请发表评论。
    • 我观看了视频并尝试了 d.AssignedDateTime_before_type_cast 它给了我 2015-08-13 09:05:00 UTC,有没有办法让 Rails 不认为数据库中存储的时间是 UTC ?
    • 谢谢@Meier。我想知道为什么这被否决了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    • 2015-10-07
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    相关资源
    最近更新 更多