根据toLocaleTimeString将12小时hh:mm AM / PM转换为24小时hh:mm

如何解决根据toLocaleTimeString将12小时hh:mm AM / PM转换为24小时hh:mm

我的网站/数据库上有一些开放时间信息,格式为hh:mm AM / PM,如果用户浏览器的语言设置偏爱该格式而不是AM /,我希望将其转换为24小时hh:mm。 PM格式。

我听说使用Javascript的 .toLocaleTimeString()是可能的。 谁可以帮我一个功能?

例如,

var time = '11:30am to 3pm,5 to 9pm';

希望获得输出/将其重写为

var time = '11:30 to 15:00,17:00 to 21:00';

解决方法

function timeToLocale(hours,minutes,locale=[]) {
  var time = new Date();
  time.setHours(hours,minutes);
  return time.toLocaleTimeString(locale,{timeStyle: 'short'});
}

var time;

time = timeToLocale(11,30)+" to "+
       timeToLocale(15,0)+","  +
       timeToLocale(17,0)+" to "+
       timeToLocale(21,0);
console.log(time);

time = timeToLocale(11,30,"en-US")+" to "+
       timeToLocale(15,"en-US")+","en-US")+" to "+
       timeToLocale(21,"en-US");
console.log(time);

time = timeToLocale(11,"en-IL")+" to "+
       timeToLocale(15,"en-IL")+","en-IL")+" to "+
       timeToLocale(21,"en-IL");
console.log(time);

不指定locale-出于演示目的,它位于摘要中=使用第一个设置time的格式=不使用locale
请以24小时格式和分钟来指定时间。


我在以色列,但浏览器使用“ en-US”,因此这是一种强制其使用“ en-IL”的“方式”:
我用了一个国家/地区的名字的第一个单词,似乎还可以。
我在Windows 10上使用Chrome-可能需要针对跨平台和/或跨浏览器进行调整。
此外,它假设用户的语言是英语。
嘘!

var codeByCountry={"Afghanistan":"AF","Aland":"AX","Albania":"AL","Algeria":"DZ","American":"AS","Andorra":"AD","Angola":"AO","Anguilla":"AI","Antarctica":"AQ","Antigua":"AG","Argentina":"AR","Armenia":"AM","Aruba":"AW","Australia":"AU","Austria":"AT","Azerbaijan":"AZ","Bahamas":"BS","Bahrain":"BH","Bangladesh":"BD","Barbados":"BB","Belarus":"BY","Belgium":"BE","Belize":"BZ","Benin":"BJ","Bermuda":"BM","Bhutan":"BT","Bolivia":"BO","Bosnia":"BA","Botswana":"BW","Bouvet":"BV","Brazil":"BR","British":"IO","Brunei":"BN","Bulgaria":"BG","Burkina":"BF","Burundi":"BI","Cambodia":"KH","Cameroon":"CM","Canada":"CA","Cape":"CV","Cayman":"KY","Central":"CF","Chad":"TD","Chile":"CL","China":"CN","Christmas":"CX","Cocos":"CC","Colombia":"CO","Comoros":"KM","Congo":"CG","Congo,":"CD","Cook":"CK","Costa":"CR","Cote":"CI","Croatia":"HR","Cuba":"CU","Cyprus":"CY","Czech":"CZ","Denmark":"DK","Djibouti":"DJ","Dominica":"DM","Dominican":"DO","Ecuador":"EC","Egypt":"EG","El":"SV","Equatorial":"GQ","Eritrea":"ER","Estonia":"EE","Ethiopia":"ET","Falkland":"FK","Faroe":"FO","Fiji":"FJ","Finland":"FI","France":"FR","French":"TF","Gabon":"GA","Gambia":"GM","Georgia":"GE","Germany":"DE","Ghana":"GH","Gibraltar":"GI","Greece":"GR","Greenland":"GL","Grenada":"GD","Guadeloupe":"GP","Guam":"GU","Guatemala":"GT","Guernsey":"GG","Guinea":"GN","Guinea-Bissau":"GW","Guyana":"GY","Haiti":"HT","Heard":"HM","Holy":"VA","Honduras":"HN","Hong":"HK","Hungary":"HU","Iceland":"IS","India":"IN","Indonesia":"ID","Iran,":"IR","Iraq":"IQ","Ireland":"IE","Isle":"IM","Israel":"IL","Italy":"IT","Jamaica":"JM","Japan":"JP","Jersey":"JE","Jordan":"JO","Kazakhstan":"KZ","Kenya":"KE","Kiribati":"KI","Korea":"KR","Kuwait":"KW","Kyrgyzstan":"KG","Lao":"LA","Latvia":"LV","Lebanon":"LB","Lesotho":"LS","Liberia":"LR","Libyan":"LY","Liechtenstein":"LI","Lithuania":"LT","Luxembourg":"LU","Macao":"MO","Macedonia":"MK","Madagascar":"MG","Malawi":"MW","Malaysia":"MY","Maldives":"MV","Mali":"ML","Malta":"MT","Marshall":"MH","Martinique":"MQ","Mauritania":"MR","Mauritius":"MU","Mayotte":"YT","Mexico":"MX","Micronesia,":"FM","Moldova":"MD","Monaco":"MC","Mongolia":"MN","Montenegro":"ME","Montserrat":"MS","Morocco":"MA","Mozambique":"MZ","Myanmar":"MM","Namibia":"NA","Nauru":"NR","Nepal":"NP","Netherlands":"AN","New":"NZ","Nicaragua":"NI","Niger":"NE","Nigeria":"NG","Niue":"NU","Norfolk":"NF","Northern":"MP","Norway":"NO","Oman":"OM","Pakistan":"PK","Palau":"PW","Palestinian":"PS","Panama":"PA","Papua":"PG","Paraguay":"PY","Peru":"PE","Philippines":"PH","Pitcairn":"PN","Poland":"PL","Portugal":"PT","Puerto":"PR","Qatar":"QA","Reunion":"RE","Romania":"RO","Russian":"RU","Rwanda":"RW","Saint":"VC","Samoa":"WS","San":"SM","Sao":"ST","Saudi":"SA","Senegal":"SN","Serbia":"RS","Seychelles":"SC","Sierra":"SL","Singapore":"SG","Slovakia":"SK","Slovenia":"SI","Solomon":"SB","Somalia":"SO","South":"GS","Spain":"ES","Sri":"LK","Sudan":"SD","Suriname":"SR","Svalbard":"SJ","Swaziland":"SZ","Sweden":"SE","Switzerland":"CH","Syrian":"SY","Taiwan":"TW","Tajikistan":"TJ","Tanzania":"TZ","Thailand":"TH","Timor-Leste":"TL","Togo":"TG","Tokelau":"TK","Tonga":"TO","Trinidad":"TT","Tunisia":"TN","Turkey":"TR","Turkmenistan":"TM","Turks":"TC","Tuvalu":"TV","Uganda":"UG","Ukraine":"UA","United":"UM","Uruguay":"UY","Uzbekistan":"UZ","Vanuatu":"VU","Venezuela":"VE","Viet":"VN","Virgin":"VI","Wallis":"WF","Western":"EH","Yemen":"YE","Zambia":"ZM","Zimbabwe":"ZW"};

var language=navigator.language.split("-")[0];
var country=(new Date).toString().split("(")[1].split(" ")[0];
var code=codeByCountry[country];
var languageAndCode=language+"-"+code;

function timeToLocale(hours,locale) {
  if(locale==undefined) locale=languageAndCode;
  var time = new Date();
  time.setHours(hours,"en-IL");
console.log(time);

,

您可以创建一个Date,将其设置为时间,然后使用 Date.prototype.toLocaleString 以及默认语言和适当的时间选项。这将根据浏览器语言设置来格式化时间,但是也可能不是用户喜欢或期望的格式。

如果时间以24小时格式传递给函数,则更为简单。

下面的代码创建一个日期为2000年1月1日(可以是任何日期),并使用UTC来确保它避免了夏时制转换时间,因为这可能会导致创建两次或根本不发生的时间,从而导致意外结果。

语言将设置小时周期以及12小时还是24小时。请注意,在某些情况下,浏览器会把它弄错,例如Javascript Intl.DateTimeFormat hours12 gives odd output on Chrome

/**
 * Return time string based on browser default language
 *
 * @param {number} hr: hour of time in 24 hour format
 * @param {number} min: minute of time
 * @returns {string} time formatted for browser default language
 */
function timeAsBrowserDefaultLanguage(hr,min) {
  let d = new Date(Date.UTC(2000,1,hr,min));
  return d.toLocaleString('default',{
    hour: 'numeric',minute: 'numeric',timeZone: 'UTC'
  });
}

console.log(timeAsBrowserDefaultLanguage(20,15));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-