获取用户的当前日期和时间,单位为R/SHINY [英] Get the user's current date and time in R/Shiny
本文介绍了获取用户的当前日期和时间,单位为R/SHINY的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在构建一个闪亮的应用程序并将其托管在服务器上。有日期和时间输入。默认值为Sys.Date()。现在,当用户访问它时,默认为服务器日期和时间,而不是用户。
请告诉我如何获取用户的当前时间和日期,并将其作为默认值输入我的输入框。
当前输入场景:
dateInput("dateto", "Date To:", format = "mm/dd/yyyy", value = Sys.time()),
textInput("dateto_hour", "HH:MM",
value = gsub("(.*):.*","\1",format(Sys.time(), "%X")))
推荐答案
人们已经找到了几种解决方案(例如,here),它们都有自己的优势。由于您希望将其用作文本输入中的缺省值,因此我为满足类似需求而采用的这个解决方案可能对您很有效。它涉及使用一些JS读取客户端的浏览器时间,将其指定为extInput中的缺省值,然后稍后在服务器中使用该extInput。在我的应用程序中,我使用它为用户提交的数据添加时间戳。
在UI中,您需要将以下JS脚本放在文本输入之前:
tags$script('
$(document).ready(function(){
var d = new Date();
var target = $("#clientTime");
target.val(d.toLocaleString());
target.trigger("change");
});
'),
textInput("clientTime", "Client Time", value = "")
如评论中所示,session$userData
可用于存储特定于会话的数据,如input$clientTime
,以供在服务器中使用和操作。下面是一个完整的应用程序,显示了服务器时间和客户端时间之间的差异,但您显然需要将其发布到服务器才能看到差异。
library(shiny)
ui <- fluidPage(
verbatimTextOutput("server"),
tags$script('
$(document).ready(function(){
var d = new Date();
var target = $("#clientTime");
target.val(d.toLocaleString());
target.trigger("change");
});
'),
textInput("clientTime", "Client Time", value = ""),
verbatimTextOutput("local")
)
server <- function(input, output, session) {
output$server <- renderText({ c("Server time:", as.character(Sys.time()), as.character(Sys.timezone())) })
session$userData$time <- reactive({format(lubridate::mdy_hms(as.character(input$clientTime)), "%d/%m/%Y; %H:%M:%S")})
output$local <- renderText({session$userData$time() })
}
shinyApp(ui = ui, server = server)
这篇关于获取用户的当前日期和时间,单位为R/SHINY的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文