随机~UTC 时间列表

在这里插入图片描述

install

import momentDurationFormatSetup from "moment-duration-format";
import moment from "moment-timezone";
momentDurationFormatSetup(moment);

utils.ts

  function formatTimezone(name: string) {
    const tz = moment.tz(name);
    const zoneAbbr = tz.zoneAbbr();
    const offset = tz.utcOffset();
    const offsetStr =
      (offset >= 0 ? "+" : "") + moment.duration(offset, "minutes").format("hh:mm", { trim: false });
    if (name === zoneAbbr) {
      return `${zoneAbbr} (${offsetStr})`;
    }
    return `${name} (${zoneAbbr}, ${offsetStr})`;
  } 
/**
 * filterMap creates a new array populated with the results of calling a provided function on every
 * element in the calling array. Results which resolve to a javascript "false" value are discarded
 * from the array.
 *
 * This is a more efficient version of [...values].map(mapFn).filter(Boolean) that avoids two
 * iterations of the array.
 */
export default function filterMap<T, U>(
  values: Iterable<T>,
  mapFn: (arg0: T, arg1: number) => U | undefined,
): U[] {
  const results: Array<U> = [];
  let index = 0;
  for (const item of values) {
    const mappedItem = mapFn(item, index++);
    // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
    if (mappedItem) {
      results.push(mappedItem);
    }
  }
  return results;
}
  	// 当前地区
    console.log({
      key: "detect",
      label: `Detect from system: ${formatTimezone(moment.tz.guess())}`,
      data: undefined,
    })
    、、
    console.log({ key: "zone:UTC", label: `${formatTimezone("UTC")}`, data: "UTC" });
    const timezones = filterMap(moment.tz.names(), (name) => {
      // UTC is always hoisted to the top in fixedItems
      if (name === "UTC") {
        return undefined;
      }
      return { key: `zone:${name}`, label: formatTimezone(name), data: name };
    })
    console.log(timezones);

参考:@foxglove/den/collection;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值