使用 Shiny 时如何检索客户端的当前时间和时区?

Ras*_*åth 6 timezone r shiny

我想知道是否有一些聪明的方法可以让客户端获取当前时间和时区,以便在server.RShiny 应用程序的一部分中使用它。如果没有,那么最简单的方法是什么?

Ras*_*åth 3

我发现了一种有效的方法,它只是对在应用程序加载时读取 javascript 变量到闪亮/R 的stackoverflow 答案的一个小修改。它不会检索实际时区,而是检索时区偏移量。

在ui.R中

HTML('<input type="text" id="client_time" name="client_time" style="display: none;"> '),
HTML('<input type="text" id="client_time_zone_offset" name="client_time_zone_offset" style="display: none;"> '),

tags$script('
  $(function() {
    var time_now = new Date()
    $("input#client_time").val(time_now.getTime())
    $("input#client_time_zone_offset").val(time_now.getTimezoneOffset())
  });    
')
Run Code Online (Sandbox Code Playgroud)

上面创建了两个divs,javascript 代码检索客户端时间和时区偏移量并将它们放入divs 中。

在服务器.R中

client_time <- reactive(as.numeric(input$client_time) / 1000) # in s
time_zone_offset <- reactive(as.numeric(input$client_time_zone_offset) * 60 ) # in s 
Run Code Online (Sandbox Code Playgroud)

上面创建了两个可以在服务器代码中使用的反应变量。为了便于处理,我还input$client_time从 ms 转换为 s,input$client_time_zone_offset从 min 转换为 s。