在 moment.js fromNow() 或 from() 中使用时区

2023-11-21

我想向用户展示自他们执行操作以来已经过去了多长时间。

发生操作的日期+时间存储在服务器上,采用服务器的时区。这就是造成问题的原因,因为如果用户计算机的时区比服务器时区早 12 小时,那么如果用户现在添加某些内容,moment.js 将显示“12 小时前”作为输出fromNow()而不是just now.

为了尝试解决这个问题,我正在尝试以下方法:

var actionTime = moment( action.timeStamp);//time of when user performed action 
var serverTime = moment().zone('-07:00'); //current server time

console.debug( serverTime);//outputs Wed Sep 11 2013 15:19:51 GMT-0700

var timeAgo = serverTime.from( actionTime);

但尽管如此,timeAgo仍然显示客户端时区和服务器时区之间的差异(即显示“12 小时前”而不是“现在”);

有人知道如何解决这个问题或者我做错了什么吗?


理想情况下,您希望将 UTC 时间戳从服务器传递到客户端。这并不意味着您必须将整个服务器切换为 UTC,它只是意味着您需要先将数据库中的时间转换为服务器上的 UTC,然后再通过网络发送。当然,如果你真的这么做就更好了storedUTC 时间,但您说您现在无法进行此类更改。但是,让我们假设您根本无法更改服务器上的任何内容。

我们还将假设您的服务器是fixed到 UTC-07:00 偏移量。在现实生活中,这只适用于像亚利桑那州这样不遵循夏令时的地方。因此,如果您位于洛杉矶且采用太平洋时间,那么您的部分数据基于 UTC-07:00,但部分数据基于 UTC-08:00。如果你想用 JavaScript 来做这件事,就需要做更多的工作。

我们还假设输入已经是 ISO8601 格式的字符串。 (如果不是,请告诉我,我将调整此代码。)

var s = "2013-09-11 18:00:00";  // from action.timeStamp

var actionTime = moment(s + "-07:00", "YYYY-MM-DD HH:mm:ssZ");

var timeAgo = actionTime.fromNow();

您的其他代码不起作用的原因是因为在第一行中,您受到浏览器时区的影响。第二行中的区域设置器仅更改格式化区域,而不更改实际时间。

另外,当您将片刻转储到控制台进行调试时,请确保对其进行格式化以进行输出。否则,您只是查看其内部属性值,这可能直接有意义,也可能没有直接意义。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 moment.js fromNow() 或 from() 中使用时区 的相关文章

随机推荐

  • git 忽略异常

    我有一个 gitignore 文件 它使 git 忽略 dll文件 这实际上是我想要的行为 但是 如果我想要一个例外 即能够提交foo dll 我怎样才能做到这一点 Use dll Exclude all dlls foo dll Exce
  • 如何从左上到右填充 QGridLayout?

    我想填写一个QGridLayout with QWidgets The QWidgets需要以从左上到右上的方式出现 并在每行填充后继续向下填充QWidgets 类似且熟悉的 GUI 的一个例子是 Apple 如何在 iPhone 或 iP
  • 使用 XPath 查询从匹配的 XML 节点获取属性值

    这看起来并不困难 但我目前陷入困境 我正在尝试从与给定 XPath 查询字符串匹配的节点获取特定属性的属性值 这是我到目前为止所拥有的 public static IEnumerable
  • 如何在java中创建任意深度的嵌套数组?

    我正在尝试创建一个由数组的数组组成的数组等 但我不知道在运行时之前需要多少嵌套级别 根据输入 我可能需要int int int 或其他任何东西 对于上下文 我正在尝试构建一个N维网格对于元胞自动机 其中 N 作为参数传递 我没有任何代码给你
  • Maven“无法解析错误消息”(Java 7 + Maven 2)

    我有一个基于 Maven 的 GWT 项目 其中包括 Guava 我在 Maven 尝试 但失败 编译它在中找到的源代码时遇到了麻烦guava gwt jar could not parse error message symbol sta
  • 尝试通过 I2C 从 Arduino 获取数据时,出现 IOError:[Errno 121] python(树莓派)上的 smbus 远程 I/O 错误

    我遇到了问题 在启动通过 I2C 从 Arduino 请求数据的脚本时 python 有时会在我的 raspberry pi 3 上抛出这个 IOError 电气连接是完美的 所以这不是问题 此外 我在使用 i2cget y 1 0x04
  • 使用 javascript 旋转 3D 图片

    我开始开发一个广泛使用 javascript 的单页网站 该网站的主要目的是推广我的客户的产品 该网站将包含一张产品 3D 图像 当用户单击并拖动时 它应该相应旋转 请参阅下面的链接 我需要与以下链接中提到的完全相同的效果 单击此处获取链接
  • Intel IA32 架构中堆栈的宽度是多少?

    对于 IA32 架构和所有类型的微处理器 微控制器 堆栈的宽度是 8 位宽 我目前正在阅读http ozark hendrix edu burch csbsju cs 350 handouts x86 html关于汇编语言 在 call 的
  • 如何计算大型数据集每分钟出现的次数

    我有一个包含 50 万个约会的数据集 持续时间在 5 到 60 分钟之间 tdata lt structure list Start structure c 1325493000 1325493600 1325494200 13254948
  • 使用 RemoteAuthenticatorView OnLogInSucceeded 会出现第二个 AzureAD 登录对话框

    很难理解正在发生的事情 我确实需要一些想法和投入 拜托 我不太擅长用文字描述问题所在 所以请温柔一点 我有一个 Blazor wasm 前端和一个 Azure Function 后端 我进行了标准的 没什么特别的 Azure AD 登录 稍
  • SQL Server 与 Node.js 的连接

    我正在尝试在 nodejs 项目和运行 Microsoft SQL Server 2005 的服务器之间建立连接 我正在使用节点模块mssql 但是当我尝试创建连接时出现这些错误 连接错误 在 15000 毫秒内无法连接到 123 123
  • 是吗?表示 shell 脚本中的某些内容

    Does bash shell脚本中存在 如果存在 请告知其用途 以及为什么它在什么时候给出空白echo 是在命令行上运行的吗 除了其他答案之外 这个回声 echo 如果您尚未运行任何命令 将打印空白后台进程在当前外壳中 如果您现在运行 d
  • 对大型集合进行排序,同时显示进度

    更新进度条时对集合进行排序的最佳方法是什么 目前我有这样的代码 for int i 0 i lt items size i progressBar setValue i Uses Collections binarySearch Colle
  • 是否可以将
  • 放在
  • 我有一个正在使用列表的导航 我把它放在一个 ul 但这弄乱了我的用户界面 因为它有奇怪的自动边距 我试过没有 ul 它们似乎起作用了 这适用于所有浏览器吗 这合法吗 以前还有其他人这样做过吗 It s 无效的 HTML to use li
  • 自定义自动调整大小的 WPF 面板类

    我正在尝试写一个自定义PanelWPF 的类 通过覆盖MeasureOverride and ArrangeOverride但是 虽然它是mostly工作中我遇到了一个我无法解释的奇怪问题 特别是 在我打电话之后Arrange在我的孩子项目
  • 使用 javascript 播放 PCM

    我在浏览器上播放 PCM 音频时遇到一些问题 PCM 音频来自带有 udp 协议的 Android 设备 并以 raw 形式保存在服务器上 我尝试在 webaudioapi 的帮助下播放这个保存的文件 但没有成功 使用以下代码 向我播放一些
  • python中监听端口并捕获数据

    我正在使用 C 语言的应用程序 它将连续数据发送到指定端口 我可以使用 Putty 使用 telnet 127 0 0 1 端口 30003 查看传入数据 现在我想捕获该数据进行处理 请建议如何在 python 中做到这一点 数据以每秒 5
  • iOS 临时文件夹位置

    我的应用程序刚刚被 Apple 拒绝 因为它在文档目录中存储临时或缓存文件 正确的 他们的拒绝消息指出 您的应用程序使用的临时文件应仅存储在 tmp目录 我想除了文件 and Library在应用程序的文件夹中 我现在正在尝试在iPhone
  • ASP.NET MVC 将强类型数据传递到母版页

    复制 在 ASP NET MVC 中将数据传递到母版页 ASP NET 母版页应该从视图中获取数据吗 我一直遵循这种方法将公共数据传递到 site master 然而 这确实需要对 ViewData 进行特定的转换 而且我不喜欢到处使用字符
  • 在 moment.js fromNow() 或 from() 中使用时区

    我想向用户展示自他们执行操作以来已经过去了多长时间 发生操作的日期 时间存储在服务器上 采用服务器的时区 这就是造成问题的原因 因为如果用户计算机的时区比服务器时区早 12 小时 那么如果用户现在添加某些内容 moment js 将显示 1