You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TypeScript/JavaScript中按文化码获取周末起止日期?

根据文化码获取各地区周末日期的实现方案

核心思路

主流日期库(如moment.js)没有内置这类区域化周末规则,所以需要手动维护文化码与周末规则的映射表,再基于这个表实现查询逻辑,映射表可参考通用的各国周末规则构建。

具体实现步骤

1. 定义周末规则映射表

以文化码为键,用数字(0=周日,1=周一…6=周六)表示周末日期,整理常见地区的规则:

const weekendRules: Record<string, number[]> = {
  // 通用地区:周六、周日
  'en-US': [0, 6],
  'zh-CN': [0, 6],
  // 墨西哥:仅周日
  'es-MX': [0],
  // 中东国家:周五、周六
  'ar-SA': [5, 6],
  'ar-AE': [5, 6],
  // 以色列:周五、周六
  'he-IL': [5, 6]
};

2. 实现查询函数

写一个TypeScript函数,支持完整文化码匹配,匹配不到时尝试语言前缀匹配,最后返回默认规则:

type DayOfWeek = 0 | 1 | 2 | 3 | 4 | 5 | 6;

function getWeekendDays(locale: string): DayOfWeek[] {
  // 优先匹配完整文化码
  const fullMatch = weekendRules[locale];
  if (fullMatch) return fullMatch;

  // 匹配语言前缀(如传入'ar'时匹配阿拉伯语通用规则)
  const langPrefix = locale.split('-')[0];
  const prefixMatch = weekendRules[langPrefix];
  if (prefixMatch) return prefixMatch;

  // 默认返回通用的周六、周日
  return [0, 6];
}

3. 使用示例

// 获取墨西哥周末
console.log(getWeekendDays('es-MX')); // 输出 [0]
// 获取沙特阿拉伯周末
console.log(getWeekendDays('ar-SA')); // 输出 [5, 6]
// 获取中国周末
console.log(getWeekendDays('zh-CN')); // 输出 [0, 6]

补充说明

  • 若需要覆盖更多地区,可参考权威区域工作日数据扩展映射表;
  • 可结合Intl.Locale API更精准解析文化码变体;
  • 若需动态更新规则,可将映射表存为配置文件或后端接口,便于维护。

内容的提问来源于stack exchange,提问作者007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 09:12:35