JavaScript DateTimepicker 与本地支持
javascript datetimepicker with local support
我希望用户输入约会日期和时间,并在预约前一小时向他发送提醒。
在服务器上,我想以 UTC 格式存储日期时间,但在客户端上,用户将以本地时间输入它。处理这种转换的最佳方法是什么?有没有原生支持此功能的插件?
是的,有一个插件可以根据系统信息(jsTimezoneDetect(检测时区。实际上,date
对象本身存储信息(但它有点wierdo!
SO上有一篇有趣的文章和一个有趣的答案,值得一读!
不要在javascript中做任何日期时间计算。你可能会猜到 浏览器来定义时区,但定义本身和所有 日期时间计算必须在时区感知系统中进行。
当您阅读本文时,您将对"javascript 中的日期/dst/utc/时区"问题有更深入的了解 - 因此,如果您告诉我们更多关于您的服务器端的信息,那将很有趣:
- 您在服务器端使用哪个框架?
- 您是否有任何逻辑可以使用某些设置(例如自定义时区设置(重新设置帐户?
"正确"的方法(如果你背后有后端,这是故障安全的(将是:让用户使用日期时间 - 在浏览器范围内,它或多或少是"未定义的"(无需查找时区、偏移量或类似的东西!现在,您将此"未定义"的日期时间信息提供给服务器(例如,将带有隐藏字段的unix时间戳发送到服务器(,其中您拥有用户被分配到哪个实际时区的信息。因此,您现在可以将此"未定义"的日期时间信息转换为服务器端的时区感知日期时间对象,并将帐户范围的信息分配给它(现在"未定义"的日期时间对象具有本地时区 - 例如"太平洋夏令时"(。现在,您可以轻松进行所需的任何转换。
这种方法的唯一缺点是,您将有 2 个定义时区(用户和 Web 应用程序的操作系统(的范围 - 但其他任何事情都是摆弄的,不是故障安全的!
使用 getTimezoneOffset
方法计算 UTC 日期/时间客户端,将时间戳发送到服务器可能是一个想法。要将其转换回客户端,您需要发送时间戳,创建一个虚拟日期客户端以确定当前时区偏移量(用户可能已移动到另一个时区!(,并根据该信息创建客户端日期。客户端,你会做这样的事情:
//[client side send]
var d = new Date(), //now
offset = d.getTimezoneOffset()
UTCTimeStamp = d.getTime()+(60000*offset); // send to server
//[client side receive]
var offset = 60000*new Date().getTimezoneOffset(),
localDate = new Date(timestamp + (offset < 0 ? Math.abs(offset) : -offset));
单击此处使用此想法进行简单测试。
- jQuery-2.1.1.min.js或最新版本jQuery-2.13.min.js不会't支持'@
- jQuery检测浏览器是否支持Zoom
- 错误:对象没有't支持'自动完成'
- EmberJS中支持单字母单词模型
- javascript中的命名空间,IDE中支持代码完成/内容辅助's
- Internet Explorer缺少占位符支持,特别是密码字段
- 为什么我得到错误IE修剪方法是't支持
- 任何浏览器都不支持javascript函数
- GTK百老汇支持同时连接
- JQuery示例不起作用-“;对象没有't支持属性或方法'按钮'&”;
- 对象不支持属性或方法“自动完成”
- 对象没有'不支持set_viewXML
- Javascript Q库浏览器支持
- 您的平台不支持RxJS-Array.observe
- React Native当前是否支持访问用户'的通讯簿
- 将HTML(支持文件)中的令牌(字符串、数字等)传递给LogiXML
- 错误:语法错误,无法识别的表达式:不支持的伪:无效/RectJS/Unit Testing
- Excellen导出xlsx支持
- Django'支持Javascript文件中的翻译
- 使用Facebook登录,但仍然可以获得:“;此标识池不支持未经身份验证的访问“;