浏览器中跨时区的相同日期时间 - 在预订引擎上

2023-12-21

我正在寻找在任何浏览器中使用同一时间在国际上预订服务的最佳实践/解决方案。我不太明白其中的逻辑(也在这里挖掘)。

Use case

  • 布鲁塞尔预订的用户假设有一家位于新加坡的理发服务 - 他一周后将飞往那里。他在浏览器日期时间控件中选择 14:00。然而,浏览器设置为 +1 UTC。
  • 新加坡理发师应将其议程中的时间视为新加坡时间 14:00。
  • 理发店老板正在迪拜旅行,尽管他的浏览器暂时设置为 +4 UTC,但他希望看到自己的议程仍在 SG 时区。

基本上,所有角色都必须看到“理发店”当地时间,无论他们在哪个 TZ,并以“理发店”时间向服务器报告。

服务器时间为 UTC,时间戳以 unix 秒为单位。 “商店”TZ 广为人知。

问题是我使用了几个在内部利用浏览器本地时间的 jquery 插件(datetimepicker 和日历),并且有几千行代码需要分析和修复,这使得它的支持性较差 - (布鲁塞尔|任何其他 TZ)的浏览器每个“new Date()”都会获取本地浏览器时间。还有相当多的狭窄地方(因为这些想象中的“理发店”位于世界各地并且是从地图上挑选的,所以目标 TZ 是动态的)。

对此的常见做法是什么?

是不是更容易

  • 在js中模拟“动态”基准日期,不关心时区,并提供给插件
  • 加载到客户端时将服务器数据转换为本地 TZ
  • 应用其他解决方案

非常感谢

PS我读过最佳实践 https://stackoverflow.com/questions/2532729/daylight-saving-time-and-timezone-best-practices- 但正如我所说,我有点必须使用特定的插件。

SOLUTION:

我意识到我不需要relative这些日期时间的值,因为我从来不需要按时间比较不同“理发店”的书籍(每个“商店”都有纬度/经度,如果需要,我仍然可以重新计算相对时间)。

基本上我只需要absoluteUTC 值与时区无关,在本例中,unix 时间(自 1970 年 UTC 以来的秒数)非常适合。

现在,我在客户端和服务器/数据库端都以明确的 UTC 日期运行整个系统,存储和显示,而不是通过客户端的用户浏览器偏移来纠正时间,将其发送到后端,并通过目标偏移来修复它。适用于所有角色,但日期/时间过滤器除外,它们绑定到本地浏览器时钟并且不存储在任何地方。


有几种方法可以解决这个问题。

Option 1

  • 忘记 UTC、浏览器时区和目标时区。只需将它们视为未指定日期时间。
  • 在服务器和客户端之间,不要传递整数刻度或秒 - 这些都与 UTC 绑定。相反,将本地日期时间作为 ISO8601 字符串传递,不带偏移量或“Z”。
  • Use moment.js http://momentjs.com/解析和格式化字符串而不引入浏览器的偏移量。例如:

    // to get a Date value suitable for use with an existing control or script.
    var date = moment('2013-04-19T14:00').toDate();
    
    // to get a string back from a Date that's ready to go to your server.
    var str = moment(date).format('YYYY-MM-DDTHH:mm');
    
  • 在服务器端,这取决于您所在的平台。可能已经支持 ISO8601。例如,在 .Net 中,它很简单.ToString("o")。如果您需要这方面的具体建议,请告诉我们您的服务器平台/语言。

Option 2

  • 使用 ISO8601 及其“Z”说明符将 UTC 日期时间传输到服务器或从服务器传输 UTC 日期时间。
  • 任何时候处理日期时,请使用 TZDB javascript 库,例如我列出的库之一here https://stackoverflow.com/a/15171030/634824。与 UTC 和目标时区之间的转换 - 忽略浏览器的时区。
  • 这会很好地工作,现在你谈论的是一个特定的时刻而不是某个时刻未指定当地时间。然而,这些库需要大量数据,对于这样一个简单的任务来说可能有点过分了。我不建议这样做,除非您还有许多其他转换要做,例如将约会时间转换为其他时区。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浏览器中跨时区的相同日期时间 - 在预订引擎上 的相关文章

  • 是否可以将多个事件处理程序绑定到 JqGrid 事件而不覆盖以前的事件处理程序?

    例如 我在每次页面加载时调用默认设置 并将函数绑定到 loadComplete 来为网格执行一些基本格式化 在某些页面上 我想同时执行其他逻辑 但如果我在网格定义中设置 loadComplete 它将覆盖默认值中设置的函数 有没有办法绑定多
  • JSON 数据中的 jQGrid celledit 显示 URL 未设置警报

    我需要从服务器加载 JSON 并且希望用户能够单击并编辑该值 但是当他们编辑时 它不应该调用服务器 我的意思是我不会立即更新 所以我不想编辑网址 所以我尝试了 ClientArray 但它仍然显示 Url is not set 警报框 但是
  • 如何发送正确的授权标头以进行基本身份验证

    我正在尝试从 API 发布数据 但无法通过基本身份验证 I try ajax type POST url http theappurl com api v1 method data crossDomain true beforeSend f
  • 插入最大日期(独立于数据库)

    在我的本地设置中 我使用一个简单的 H2 数据库 托管 解决方案将有另一个 类似但不相同 数据库 我需要将最大可能日期插入到日期时间列中 我尝试使用 Instant MAX 但是 这会导致列中出现 169104626 12 11 20 08
  • javascript 选择自定义光标 (svg)

    我正在动态地将光标更改为悬停时的本地 svg element on mouseover function this css cursor url svgs pointer svg 9 30 auto 工作正常 但我想选择该 svg 来操纵其
  • 欧洲中部时间 14 日 3 月 30 日星期五 00:00:00 至 日/月/年

    我尝试解析格式日期Fri Mar 30 00 00 00 CET 14至 日 月 年 这是我的代码 SimpleDateFormat formatter new SimpleDateFormat dd MM yyyy System out
  • 使用单击事件调用“trigger”方法时的复选框值

    如何在点击事件中获取正确的当前值以通过触发器调用 Html
  • 覆盖 jQuery 验证 MVC4 中的默认设置

    要覆盖查询验证插件 请在文件 http docs jquery com Plugins Validation validate toptions 推荐的方式是 selector validate invalidHandler functio
  • 没有输入的 jQuery 日期选择器

    我有一个相当复杂的网络应用程序 我想向其中添加一些日期选择 UI 我遇到的问题是我无法从文档中弄清楚如何真正控制日期选择器的出现方式和时间 不涉及任何表单元素 不 我不会添加秘密表单字段 因此简单的开箱即用方法根本行不通 我希望有人可以提供
  • 如何使用 jquery 拖动文本区域和输入

    我在用jQuery UI draggable拖动元素 但它似乎不适用于文本区域和输入 因为每当我单击它们时它们就会聚焦 这里有一个JSbin 演示 http jsbin com ICEYaZor 1 edit html js output的
  • 如何动态地将 &autoplay=1 添加到 youtube 嵌入代码?

    这是我网站上的 YouTube 嵌入代码示例
  • jQuery 生成 div 和碰撞检测

    所以我的学校作业项目快要结束了 我只是错过了两件我似乎无法弄清楚的主要事情 1 如何生成具有随机位置的间隙的管道障碍物 以便鸟可以飞过 尝试使用一个函数来更改间隙位置的管道 div 的 css right attr 并在以下情况下移除管道它
  • 如何在单击事件时向数组添加值

    我想要实现的是读取单击事件的值并将其保存到数组中 我的代码 a href class hotel Add to favourites a var hotelName hotel on click function e e preventDe
  • 如何在数据表中colspan rowspan?

    I am trying to use colspan and rowspan attributes with jQuery Datatables where a product sku can span 2 rows and a week
  • 如何检查变量是 jQuery 对象还是普通 DOM 元素?

    如何检查变量是 jQuery 对象还是普通 DOM 元素 一个 jquery 对象有一个jquery财产 jquery 对象是一个instanceof jQuery instanceof on MDN https developer moz
  • 带有 JEditable 字段的 Tab 键

    我有一个使用 JQuery 和 Jeditable 在页面上创建可编辑文本元素的页面 在编辑元素时 我希望能够从一个元素切换到下一个元素 我不确定如何 使用jeditable或jquery捕获tab键事件 keycode 9 一旦检测到该事
  • 获取 FileReader() 的结果对象

    有什么方法可以在不通过函数的情况下获取 FileReader 的结果对象 我在下面制作了示例代码 HTML br br br div div JS var code lorem ipsum input type file change fu
  • jQuery Dialog 和 Datepicker 插件出现问题

    我有一个对话框 对话框上有一个日期选择器字段 当我打开对话框并单击日期选择器字段时 日期选择器面板显示在对话框后面 我尝试了更多属性 z索引 堆栈 大框架 但没有成功 有人可以帮助我吗 Tks 旧答案 z index 注意连字符 是重要的属
  • ajaxChosen 插件将无法工作

    我整个下午都在摆弄 ajaxChosen 因为我喜欢 Chosen 但我的选项值集变得太大了 我也尝试过 select2 但它太慢了 http harvesthq github io chosen http harvesthq github
  • 如何使用 JavaScript 创建链接?

    我有一个标题字符串和一个链接字符串 我不知道如何将两者放在一起以使用 JavaScript 在页面上创建链接 任何帮助表示赞赏 我试图解决这个问题的原因是因为我有一个 RSS 源并且有一个标题和 URL 列表 我想将标题链接到 URL 以使

随机推荐