我的客户想在多个国家/时区运行他的网站。我们正在为我们的应用程序使用 MySQL。因此,在 MySQL 中存储日期字段时,我应该使用 date 或 datetime 来存储简单的日期字段。
让我举例说明我在这里面临的问题。我今天在印度创建了 2017 年 10 月 3 日的订单,但在美国创建了 2017 年 10 月 2 日的订单。我已经要求用户设置他们的时区。但是我们可以简单地通过使用日期字段来解决上述问题,还是应该使用日期时间?
谢谢
最佳答案
将 UTC 视为One True Timetm。所有其他区域和偏移量都只是变体。
在 UTC 时间轴上存储时刻。以 UTC 格式存储实际历史记录。
带时区的时间戳在标准 SQL 中,这意味着使用数据类型 TIMESTAMP WITH TIME ZONE。数据库通常将输入调整为 UTC。有的也存储了原来的时区,有的如Postgres等使用UTC调整后时区不一致。
听起来这就是您需要的类型。
虽然我不使用 MySQL,it looks like标准类型的等价物是 TIMESTAMP。
在 Java 中,您可以将此值检索为 Instant 对象。然后通过分配 ZoneId 作为 ZonedDateTime 呈现给用户。
在 SQL 中,您可以在检索期间分配时区。在我看来,通常最好让应用从 UTC 调整到一个时区,但请使用您自己的判断。
没有时区的时间戳在讨论跨时区的一般时刻时,例如“我们全局所有工厂都在 12:30 停止午休”,请使用标准类型 TIMESTAMP WITHOUT TIME ZONE。
也可以使用这种类型来安排 future 足够远的 future 事件,以至于时区定义可能会发生变化。世界各地的政客都表现出喜欢打乱时区。他们通常会在没有通知的情况下这样做,有时只是几个星期。检索值时动态应用时区。
虽然我不使用 MySQL,it looks like标准类型的等价物是 DATETIME。
日期标准类型 DATE 表示只有日期的值,没有时间和时区。
如您所知,仅日期值是不明确的。对于任何给定时刻,日期在全局范围内因地区而异。
听起来这不符合您的需求。当你提到一个日期时,你是在暗示一个时刻。也许是印度时间(Asia/Kolkata)开始营业,或者是芝加哥时间(America/Chicago)中午,或者是 UTC 时间的第一刻,无论什么您的业务规则是。
您需要进行调查以确定您试图表示为数据的信息的实际含义。
所有这些都已经在 Stack Overflow 上讨论过很多次了。请在发帖前彻底搜索,并立即了解更多信息。
请注意,日期时间工作是棘手的事情,而且通常是违反直觉的。如果您天真地认为约会工作应该快速而简单,那么您需要了解更多。放慢脚步,研究和实验。
如果您要记录 10 月 3 日上午 8:00 在印度收到的订单,请将其存储为 UTC:2017-10-03 02:30Z,因为印度比 UTC 早五个半小时。提示:Z 是 Zulu 的缩写,表示 UTC。
如果用户想要查看与另一个时区相同的时刻,请进行调整。对于 America/Chicago,这将比 UTC 晚五个小时,因此之前的日期是 10 月 2 日而不是 3 日:2017-10-02 21:30。这是与其他两个相同的时刻。我们可以通过三种方式查看同一时刻。
关于php - 如果要在多个时区运行应用程序,我们应该以日期格式还是以日期时间格式存储日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46538505/
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
我有多个ActiveRecord子类Item的实例数组,我需要根据最早的事件循环打印。在这种情况下,我需要打印付款和维护日期,如下所示:ItemAmaintenancerequiredin5daysItemBpaymentrequiredin6daysItemApaymentrequiredin7daysItemBmaintenancerequiredin8days我目前有两个查询,用于查找maintenance和payment项目(非排他性查询),并输出如下内容:paymentrequiredin...maintenancerequiredin...有什么方法可以改善上述(丑陋的)代
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/
我希望我的UserPrice模型的属性在它们为空或不验证数值时默认为0。这些属性是tax_rate、shipping_cost和price。classCreateUserPrices8,:scale=>2t.decimal:tax_rate,:precision=>8,:scale=>2t.decimal:shipping_cost,:precision=>8,:scale=>2endendend起初,我将所有3列的:default=>0放在表格中,但我不想要这样,因为它已经填充了字段,我想使用占位符。这是我的UserPrice模型:classUserPrice回答before_val
exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby中使用两个参数异步运行exe吗?我已经尝试过ruby命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何rubygems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r