Ash*_*hik 2 javascript datetime momentjs moment-timezone
我想在下拉菜单中按升序显示时刻时区列表。默认情况下,它们按字母顺序排序。但是,我的要求是按 GMT 升序对它们进行排序。
疼痛前:
[
'(GMT+00:00) Africa/Abidjan',
'(GMT+00:00) Africa/Accra',
'(GMT+03:00) Africa/Addis_Ababa',
'(GMT+01:00) Africa/Algiers',
'(GMT+03:00) Africa/Asmara',
'(GMT+03:00) Africa/Asmera',
'(GMT+00:00) Africa/Bamako',
'(GMT+01:00) Africa/Bangui',
]
Run Code Online (Sandbox Code Playgroud)
排序后:
[
'(GMT+00:00) Africa/Abidjan',
'(GMT+00:00) Africa/Accra',
'(GMT+00:00) Africa/Bamako',
'(GMT+01:00) Africa/Algiers',
'(GMT+01:00) Africa/Bangui',
'(GMT+03:00) Africa/Addis_Ababa',
'(GMT+03:00) Africa/Asmera',
'(GMT+03:00) Africa/Asmara',
]
Run Code Online (Sandbox Code Playgroud)
比你的短,阿希克。无需从数组访问时区两次
const getTimeZoneList = moment.tz.names()
.map(t => `(GMT${moment.tz(t).format("Z")}) ${t}`);
const sortByZone = (a,b) => {
let [ahh,amm] = a.split("GMT")[1].split(")")[0].split(":");
let [bhh,bmm] = b.split("GMT")[1].split(")")[0].split(":");
return (+ahh*60+amm) - (+bhh*60+bmm)
};
console.log(getTimeZoneList.sort(sortByZone))
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment-with-locales.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.27/moment-timezone-with-data-2012-2022.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2313 次 |
最近记录: |