为什么Rails将时间格式数据存储为UTC

时间:2017-03-21 16:56:52

标签: ruby-on-rails postgresql datetime

表数据是通用的,因此只需要时间作为数据(无日期)。因此,数据类型将保存为postgresql var viewModel = { PageName: "Editor", filteredCustomers: ko.observableArray([]), cachedCustomers: ko.observableArray([]), customers: ko.observableArray([]), applyFilter: ko.observableArray([]), getCachedCustomers: function() { viewModel.customers(viewModel.cachedCustomers()); viewModel.customers.valueHasMutated(); console.log(viewModel.cachedCustomers()); } }; viewModel.filterCustomers = function() { var filter = $('#txtFilter').val(); if (filter.length < 1) { return; } viewModel.applyFilter = ko.computed(function () { viewModel.customers(ko.utils.arrayFilter(viewModel.customers(), function (item, data) { return stringStartsWith(item.CustomerNumber().toLowerCase(), filter.toLowerCase()) || stringStartsWith(item.CustomerName().toLowerCase(), filter.toLowerCase()); })); }, viewModel); };

然后突然出现这种特质

time

然后,

> @day_schedules.first
=> #<Schedule id: 17, start_time: "2000-01-01 06:00:00"

如果想要将数据与> @day_schedules.first.start_time => 2000-01-01 06:00:00 UTC 数据类型进行比较,那么这些数据实际上是错误的,比如......

datetime

现在我们正在将UTC与CET进行比较......如何将@interruptions[0].pause => Sat, 18 Mar 2017 07:35:18 CET +01:00 作为给定值处理&#34; 06:00:00&#34;但对于time时区?

1 个答案:

答案 0 :(得分:0)

扩展穆的评论。 Rails将时间以UTC格式存储为默认值,但如果您希望所有格式与不同的本地格式一致,则可以更改此值。我必须警告通常认为保留在UTC中是最佳做法,但如果你想要涉足,你可以:

首先运行rake time:zones:all以查看可在Rails配置中设置的可用时区。然后,如果您想让Rails使用其中一个时区,您可以在application.rb或initializer文件中将其设置为以下内容:

application.rb中

config.time_zone = 'Eastern Time (US & Canada)'

然后你还可以在time_zone下面添加以下行,它将设置ActiveRecord以与你刚刚设置的新时区相同的格式存储你的数据:

config.active_record.default_timezone = :local