1

我们有一个基于 PHP 构建的应用程序。在应用程序中,我们提供了选择适当时区的选项,并且对于每个时区,我们在数据库中存储了相关的 php 时区标识符(如此指定)。

现在我们正在将与该应用程序相关的所有后端进程迁移到 Ruby,但我们现在面临的问题是如何处理时区,因为它们以 php 格式存储。如何在红宝石中使用它们?是否有库/宝石可以将 php 时区格式转换为 ruby​​ ?有没有类似 php 的 date_default_timezone_set 方法?

4

1 回答 1

0

正如 Andrew 建议的那样,最好的选择是尽可能完全摆脱 PHP 时区。下一个最好的事情是创建一个从 PHP 区域到类似ActiveSupport区域名称的映射。

您可以使用它来帮助您进行映射:
http ://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html

对于那些在 PHP 之间不直接匹配的映射,ActiveSupport::TimeZone您必须手动创建映射。然而,PHP 规范中的区域并不多,因此正确的映射不应该是太多的工作。

编辑

您可以ActiveSupport单独包含到任何 Ruby 应用程序中。您甚至可以单独安装 gem ( gem install activesupport)。您不需要 Rails 应用程序就可以使用它。

但是,如果您想使用类似但与 Rails 无关的东西,您可以查看该TZInfo库:

http://tzinfo.rubyforge.org/
http://tzinfo.rubyforge.org/doc/

没有标准的解决方案可以在 PHP 时区和 Ruby 时区之间进行转换。如果您正在迁移到 Ruby,那么开始将所有内容转换为TZInfo-type 数据。

于 2012-05-15T06:47:10.790 回答