-->

如何使用JavaScript来获取在轨形式的本地时间?(How can I use javascri

2019-10-20 15:47发布

我使用的是LOCAL_TIME宝石展现在用户本地时间的日期,它可以很好地用于已经添加日期,在我的本地时间来显示它们。

我有一个问题,但增加了新的日期,我试图通过用户在通过HTML表单当地时间(因此日期)。 我想在客户端设备都有自己的本地时间,所以我要抓住它。

现在我想一个字段添加到我的形式,如:

= simple_form_for(@link)do |f|
...
= f.text_field :local_client_time, value: local_time("#{Time.now()}")

但毕竟是显示

August 11, 2014 12:12pm" /> 

这不仅是恶意形成的,实际上显示(应该被隐藏),但也呈现出UTC时间,提前我的浏览器的时间是美国东部时间上的5小时。

我如何可以通过在用户本地时间的形式吗? (可能是爵士)?

我也是不知道如何处理它的控制器上。 我现在有

@link = Link.new(params[:link])

和其他一些作品的逻辑之后。 我不知道如何让创建活动记录实例(将它忽略它?)当轨处理这个额外的参数,我也是不知道如何然后使用是通过一个隐藏字段中传递的local_client_time该导轨可以使用日期格式实际设置日期字段的值verified_date

注:我需要显示的字段为所有用户,无论是登录还是不行,但似乎确定与LOCAL_TIME宝石。 唯一的问题似乎是与添加具有时间分量日期字段。 美国东部时间晚上8点后,将其添加为次日再显示反映。 另一场(“content_date”)不存在这些问题,但对于那场我只是用f.text_field :content_date, id: 'datepicker', size: 10和控制器中没有特殊的处理,并在数据库中的日期字段。

这两个日期字段类似于:

| content_date   | date         | YES  |     | NULL    |                |
| verified_date  | date         | YES  |     | NULL    |                |

我也想知道如果验证的日期字段实际上应该是日期时间,而不是来解决这个问题。 事情是我不计较时间成分,从不使用或显示。 应用程序的最低粒度日期/时间字段的水平为1天。

Answer 1:

我觉得这就够了:

= simple_form_for @link do |f|
...
  = f.text_field :local_client_time # This generates some unique ID I believe. Otherwise, define one yourself: id: <your-id>

# javascript
var localTime = new Date();
$('<ID generated through rails for your field>').val(localTime);

只要它是形式的一部分的轨道将接收在服务器端这个附加参数。 你需要做的是无论是在(例如你的Active Record模型类添加参数local_client_time ),然后确保通过你的坚强参数过滤允许的(如果你使用的Rails 4)。

如果您对您的Active Record模型字段,然后Link.new(params[:link] )应该做的伎俩,否则,你需要定义一个方法( def local_client_time=你的模型,然后将处理输入)。

当然会有一些数据管理服务器端为好,但不应该是问题太多。



Answer 2:

解决了这个一段时间回来我的应用程序,也有相当与用户时区的几个不同的实现,它可以得到真正的方式过一个的头部和艰巨的考验。 我会后在底部的链接的地方看其他implmntations。

为了您的直接要求,有一个很好的宝石,提供了JS的功能来检测客户端的时区。 请参阅本

设置完成后,你可以这样做:

$(function() {
  var detected_zone = Temporal.detect();
  $('#user_time_zone').val(detected_zone.timezone.name);
});

一旦你的时区设置,你可以使用Time.zone.now获取本地时间。

对如何跟踪每个用户的时区在分贝看看Railscasts: 链接



文章来源: How can I use javascript to get the local time in a rails form?