在 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() 中使用时区 的相关文章

  • zone.js:140未捕获类型错误:无法读取属性“删除”

    我是 kendo ui 的新手 我在小提琴中开发了原型 删除确认窗口在那里工作正常 但是当我集成到我的代码库中时 我收到错误 Cannot read property remove at the line pai to delete rem
  • 为什么 useReducer 调度会导致重新渲染?

    假设我实现一个简单的全局加载状态 如下所示 hooks useLoading js import React createContext useContext useReducer from react const Context crea
  • Flex、AngularJS + Masonry、akoenig/angular-deckgrid 等 [重复]

    这个问题在这里已经有答案了 我一直在发送此电子邮件 我即将发布一个用于 Web 应用程序安全的应用程序 它需要使用像 Masonry 这样的网格 我已经尝试过所有的 每一个角度模块 指令和不同的方法 包括基于 CSS 的技术 纯 Vanil
  • 将 pandas 数据框中的列减去其第一个值

    我需要将 pandas 数据帧的一列中的所有元素减去其第一个值 在这段代码中 pandas 抱怨 self inferred type 我猜这是循环引用 df Time df Time df Time 0 在这段代码中 pandas 抱怨为
  • 使用javascript滚动滚动条或鼠标滚轮后触发事件

    我想知道是否可以触发事件after使用滚动条或鼠标滚轮 或在触摸设备上滑动 时滚动页面 基本上 我想检测用户何时停止滚动 以便我可以进行 AJAX 加载 而不是在滚动时加载 看起来jQuery s scroll 每次用户滚动时都会触发 并且
  • 鼠标移动时画布拖动

    我正在尝试构建一个可以使用鼠标移动拖动的画布 我做了一些我无法理解的错误 因为一开始似乎有效 然后出现了一个增量错误 使画布移动得太快 考虑以下代码 window onload function var canvas document ge
  • 用更好的模式替换开关(Javascript)

    我必须升级我的应用程序以根据用户类型和角色属性显示页面 目前 我使用一个简单的 switch 语句来根据用户类型来执行此操作 例如 switch type case a return CONSTANT ONE case b return C
  • 使用 babel env 预设时,展开运算符出现语法错误

    我正在努力 现代化 meern io 入门样板 https github com Hashnode mern starter通过替换巴别塔es2015 and stage 0预设为env 然而 似乎env预设无法识别以下片段client m
  • 在动态创建的元素的onclick函数的属性中传递一个字符串

    我试图在动态创建的锚元素的 onClick 事件处理函数的参数中传递一个字符串 请参阅小提琴http jsfiddle net shmdhussain bXYe4 http jsfiddle net shmdhussain bXYe4 我无
  • 仅从功能区打开一个对话框

    我有一个带有登录按钮的功能区 可打开登录对话框 我想将对话框的数量限制为一个 我正在使用函数 displayDialogAsync startAddress options callback https learn microsoft co
  • 替换img路径jquery

    我正在尝试替换 jquery 中的 img 路径 注入远程页面 replaceexample com thumbs withexample com images 我已经尝试过这个 但似乎不起作用 img attr src replace t
  • 如何在数据表角度中基于 JSON 动态填充表值?

    我在用着Angular 数据表 https l lin github io angular datatables 我需要能够根据返回的数据动态创建表 换句话说 我不想指定列标题 Example json数据 id 2 city Baltim
  • 当 Chrome 中嵌套滚动中的数据更改时防止页面滚动

    我在页面中有一个固定大小的元素 带有 溢出 滚动 其内容经常更改 我预计该元素内部发生的更改会影响该元素的滚动 但不会影响页面滚动 但是当这个元素位于页面顶部时 页面本身开始滚动 我怎样才能防止这种情况发生 要重现此行为 我在 chrome
  • 为什么 console.log() polyfill 不使用 Function.apply()?

    我一直在看一些流行的console log 包装 填充 保罗 爱尔兰的 http paulirish com 2009 log a lightweight wrapper for consolelog 本阿尔曼的 http benalman
  • JavaScript setTimeout 和更改系统时间会导致问题

    我注意到如果我设置setTimeout未来1分钟 然后将我的系统时间更改为过去5分钟 setTimeout功能将在 6 分钟后触发 我这样做是因为我想看看夏令时系统时钟更改期间会发生什么 我的 JavaScript 网页使用setTimeo
  • 如何禁用网页中的萤火虫?

    如何使用 Javascript 禁用 firebug 我想这样做是为了向访问者隐藏我的网页的运作方式 有什么选择可以做到这一点吗 你不能 你能做的最好的事情就是混淆你的 JavaScript 实际上刮掉了 您能做的最好的事情就是将所有安全关
  • WebpackError:ReferenceError:Gatsby 上未定义窗口

    我已经在互联网上进行了大量搜索 但无法解决这个问题 我正在使用 Gasby 开发静态页面 但遇到此错误 WebpackError ReferenceError window is not defined 我的线索是 这与我正在使用的引导 模
  • jQuery UI 对话框 - 关闭后无法打开

    我有一个问题jquery ui dialog box https jqueryui com dialog 问题是 当我关闭对话框然后单击触发它的链接时 除非刷新页面 否则它不会再次弹出 如何在不刷新实际页面的情况下回调对话框 下面是我的代码
  • 如何得知客户端从服务器的下载速度?

    根据客户的下载速度 我想以低质量或高质量显示视频 任何 Javascript 或 C 解决方案都是可以接受的 Thanks 没有任何办法可以确定 您只能测量向客户端发送数据的速度 如果没有来自客户端的任何类型的输入来表明其获取信息的速度 您
  • YouTube 点击时禁用 HTML5

    有没有办法让我们通过javascript禁用HTML5视频的 播放 暂停 点击全屏 功能 然后在我们再次需要时将其放回去 我不知道你是否可以禁用它们 但你可以使用 css 删除它们 video webkit media controls f

随机推荐

  • 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