首页 / 知识
关于javascript:以用户的语言环境格式和时间偏移显示日期/时间
2023-04-16 16:49:00

Display date/time in user's locale format and time offset我希望服务器总是以HTML格式提供UTC格式的日期,并让客户机站点上的javascript将其转换为用户的本地时区。 如果我能以用户的区域设置日期格式输出,我会得到额外的奖励。 从UTC日期开始,最简单的方法似乎是创建一个新的 然后各种
对于新项目,只需使用moment.js 这个问题很古老,所以moment.js当时不存在,但是对于新项目,它可以简化很多这样的任务。 最好按如下方式分析来自UTC的日期字符串(在服务器上创建一个与ISO-8601兼容的字符串,以便在所有浏览器中获得一致的结果):
现在只需在应用程序中使用 您甚至可以在用户区域设置中设置矩对象的格式,如下所示:
要将moment.js对象转换为不同的时区(即既不是本地的也不是UTC),您需要moment.js时区扩展。这个页面还有一些例子,使用起来非常简单。 您可以使用 以下是整个列表:使用日期 一旦构建了日期对象,下面是转换的一个片段: 函数接受一个UTC格式的日期对象和格式字符串。您将需要一个
以下是我在过去项目中使用的内容:
在JS中,除了转换上面提到的每个属性之外,没有简单的跨平台的方法来格式化本地日期时间。 这里有一个快速的黑客,我用来获取本地的YYYY-MM-DD。注意这是一个黑客,因为最终日期将不再有正确的时区(所以你必须忽略时区)。如果我还需要其他东西,我使用moment.js。
d.getTimeZoneOffset()以分钟为单位返回时区偏移量,d.getTime()以毫秒为单位,因此x 60000。 我混合了迄今为止的答案并添加到其中,因为我必须阅读所有答案并额外调查一段时间,才能以用户的本地时区格式显示数据库中的日期-时间字符串。 datetime字符串来自python/django数据库,格式为:2016-12-05t15:12:24.215z 在javascript中可靠地检测浏览器语言在所有浏览器中似乎都不起作用(请参阅javascript以检测浏览器语言首选项),因此我从服务器获取浏览器语言。 python/django:将请求浏览器语言作为上下文参数发送:
HTML:将其写入隐藏输入:
javascript:获取隐藏输入的值,例如en-gb、en-us;q=0.8、en;q=0.6/,然后仅通过replace和正则表达式获取列表中的第一种语言
javascript:转换为日期时间并格式化:
请参阅:https://developer.mozilla.org/en/docs/web/javascript/reference/global_objects/date/toLocaledateString 结果是(浏览器语言为en-GB):05/12/2016,14:58 使用PHP代码中的日期,我使用了类似的方法。
我们可以这样称呼它
要获得以小时为单位的正常时区偏移量,需要使用:
重要细节:请注意,夏令时是计算结果的因素,所以这个方法给出的实际上是时间偏移量,而不是实际的地理时区偏移量。 我遇到的最佳解决方案是创建[time display="llll"datetime="utc time"/]标记,并使用javascript(jquery)相对于用户的时间来解析和显示它。 网址:http://moment js.com/moment.js 会很好地显示时间。 您可以使用以下报告时区与格林尼治标准时间(以分钟为单位)的偏移量:
注:-此函数返回一个负数。
getTimeZoneOffset()和toLocaleString适合于基本的日期工作,但是如果需要实时区域支持,请查看MDE的timeZone.js。 在这个问题的答案中,还有几个选项要讨论 要将日期转换为本地日期,请使用toLocaledateString()方法。
要将时间转换为本地时间,请使用toLocaletimeString()方法。
不知道如何进行区域设置,但javascript是客户端技术。
将包含客户的时间和日期(由他们的浏览器报告,并通过扩展他们所在的计算机)。将服务器的时间包括在响应中,并进行一些简单的数学运算来猜测时间偏移量,这应该是很简单的事情。 |
最新内容
相关内容
linux命令删除用户组?
linux命令删除用户组?,管理,密码,系统,用户组,用户,概念,命令,文件,管理员,工作组,Linux命令之用户组管理1、查看/etc/group文件,只存在名称为m纯命令行linux服务器?
纯命令行linux服务器?,密码,服务,系统,命令,终端,地址,百度,情况,状态,公共,在linux下如何访问服务器首先,连接相应linux主机,进入到linux命令行linux中用户创建命令?
linux中用户创建命令?,密码,系统,用户,软件,命令,联系方式,管理,信息,用户名,新用户,linux怎么添加用户1、打开xshell软件,远程访问您的服务器linux命令行显示路径?
linux命令行显示路径?,系统,数据,信息,命令,工作,时间,标准,文件,目录,名称,linux中查看文件和目录的命令是什么1、在Linux系统中,使用ls命令可linux注销命令用户?
linux注销命令用户?,系统,服务,密码,地址,工作,命令,状态,工具,信息,基础,linux注销用户命令1、shutdown是一个用来安全关闭或重启Linux系统的linux显示详细命令?
linux显示详细命令?,工作,系统,信息,地址,命令,标准,数据,目录,文件,名称,执行linux命令,其中显示当前目录下的文件命令是什么linux系统下用lslinux系统用户命令?
linux系统用户命令?,系统,工作,地址,信息,管理,命令,目录,时间,电脑,名称,请问linux操作系统的命令是什么linux命令是对Linux系统进行管理的命linux满屏显示命令?
linux满屏显示命令?,工具,系统,服务,电脑,网络,技术,信息,数据,上会,软件,如何显示linux所有命令1、网卡。在linux系统中,ifconfig-a命令是用来linux命令所有用户?
linux命令所有用户?,系统,密码,信息,情况,名称,命令,用户,时间,地址,位置,如何查询linux系统中所有用户的用户名和密码首先进入到linux桌面,在显示linux时间命令?
显示linux时间命令?,时间,系统,信息,一致,命令,文件,终端,目录,选项,参数,linuxcp命令并显示拷贝时间在没有带-a参数时,两个文件的时间是不一样linux命令进入用户?
linux命令进入用户?,系统,密码,用户,地址,信息,软件,命令,用户名,联系方式,电脑,linux进入第一次启动+怎么样创建用户?1、进入Linux系统,登陆管linux命令用户管理?
linux命令用户管理?,系统,密码,管理,工作,信息,地址,工具,命令,用户,基础,LInux用户管理查看/etc/group文件,只存在名称为modifiedgroup的用户