Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
使用JavaScript获取本地化星期短名称(周一至周日顺序)_创想鸟

使用JavaScript获取本地化星期短名称(周一至周日顺序)

使用javascript获取本地化星期短名称(周一至周日顺序)

本文详细介绍了如何在JavaScript中利用`Intl.DateTimeFormat` API,以周一至周日的固定顺序,生成指定语言环境下星期的本地化短名称列表。通过巧妙的日期计算和格式化方法,开发者可以轻松实现跨语言、按序的星期名称获取,适用于各种国际化应用场景。

JavaScript中获取本地化星期短名称的专业指南

在开发国际化(i18n)应用程序时,经常需要获取并展示当前语言环境下的星期名称。更进一步,有时还需要确保这些名称以特定的顺序排列,例如从周一到周日。JavaScript的Intl.DateTimeFormat API提供了强大的功能来满足这一需求。本文将详细讲解如何利用该API,结合日期计算逻辑,高效准确地获取按周一至周日顺序排列的本地化星期短名称。

核心概念:Intl.DateTimeFormat

Intl.DateTimeFormat 是ECMAScript国际化API的一部分,它允许我们以特定语言和格式选项格式化日期和时间。对于获取星期名称,其关键在于使用 weekday 选项。

weekday: ‘short’:返回星期的短名称(例如 “Mon”, “周一”)。weekday: ‘long’:返回星期的完整名称(例如 “Monday”, “星期一”)。weekday: ‘narrow’:返回星期的窄名称(通常是单个字母,例如 “M”, “一”)。

实现步骤与代码示例

为了获取从周一到周日的本地化短名称列表,我们需要创建一个循环,并为循环中的每一天生成一个对应的日期对象,然后使用 Intl.DateTimeFormat 进行格式化。这里的核心挑战在于如何确保日期对象代表的是我们想要的“周一”、“周二”等,而不受当前日期是周几的影响。

立即学习“Java免费学习笔记(深入)”;

以下是一个实现此功能的JavaScript代码示例:

/** * 获取指定语言环境下,从周一到周日顺序排列的星期短名称列表。 * @param {string} locale - 目标语言环境字符串,例如 "en-US", "fr-FR", "zh-CN"。 * @returns {string[]} 包含星期短名称的数组。 */function getLocalizedShortWeekdays(locale) {  const shortNames = [];  // 创建一个DateTimeFormat实例,用于获取星期的短名称  const formatter = new Intl.DateTimeFormat(locale, {    weekday: 'short'  });  // 获取一个参考日期,通常是当前日期  const today = new Date();  // 定义周一作为起始日(JavaScript的getDay()中,周日是0,周一是1)  const startDay = 1; // 1 for Monday  // 循环7次,分别代表周一到周日  for (let i = 0; i  part.type === 'weekday').value;    shortNames.push(shortName);  }  return shortNames;}// 示例用法:console.log("英语(美国):", getLocalizedShortWeekdays("en-US"));// 预期输出: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]console.log("法语(法国):", getLocalizedShortWeekdays("fr-FR"));// 预期输出: ["lun.", "mar.", "mer.", "jeu.", "ven.", "sam.", "dim."]console.log("中文(中国):", getLocalizedShortWeekdays("zh-CN"));// 预期输出: ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]console.log("德语(德国):", getLocalizedShortWeekdays("de-DE"));// 预期输出: ["Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa.", "So."]

代码逻辑详解

Intl.DateTimeFormat(locale, { weekday: ‘short’ }):

locale: 指定要使用的语言环境,如 fr-FR(法语-法国)。weekday: ‘short’: 告诉格式化器我们只需要星期的短名称。

const today = new Date();:

获取一个当前的日期对象作为计算的基准。这个日期本身不重要,重要的是它的 getDay() 方法。

const startDay = 1;:

在 JavaScript 的 Date.prototype.getDay() 方法中,周日是 0,周一是 1,以此类推直到周六是 6。我们希望列表从周一开始,所以将 startDay 设置为 1。

for (let i = 0; i :

这个循环迭代7次,分别对应一周中的7天。

const targetDayOfWeek = (startDay + i) % 7;:

计算当前迭代的目标星期几(0-6)。例如:i = 0: (1 + 0) % 7 = 1 (周一)i = 1: (1 + 1) % 7 = 2 (周二)…i = 5: (1 + 5) % 7 = 6 (周六)i = 6: (1 + 6) % 7 = 0 (周日)

date.setDate(today.getDate() + ((targetDayOfWeek – today.getDay() + 7) % 7));:

这是确保我们得到正确星期名称的关键步骤。today.getDay(): 获取 today 是星期几(0-6)。targetDayOfWeek – today.getDay(): 计算从 today 的星期几到 targetDayOfWeek 需要调整的天数。这个值可能是负数。+ 7) % 7: 这是一个常见的JavaScript技巧,用于将任何整数(包括负数)转换为0到6之间的正模数结果。它确保我们总是得到一个正的、表示天数偏移量的值,从而正确地将 today 调整到 targetDayOfWeek。date.setDate(…): 将 date 对象的日期设置为计算出的目标日期,这个日期将是 targetDayOfWeek 对应的星期几。

formatter.formatToParts(date):

将调整后的 date 对象格式化为包含不同日期时间组成部分的对象数组。例如 [{ type: ‘weekday’, value: ‘Mon’ }, { type: ‘literal’, value: ‘.’ }]。

formattedParts.find(part => part.type === ‘weekday’).value:

从 formatToParts 返回的数组中,找到 type 为 ‘weekday’ 的部分,并提取其 value,这就是我们需要的本地化星期短名称。

注意事项与扩展

语言环境(Locale)选择: 确保使用的 locale 字符串是标准且有效的。不同的语言环境可能会有不同的格式和约定。格式选项: 除了 weekday: ‘short’,还可以尝试 weekday: ‘long’ 或 weekday: ‘narrow’ 来获取不同长度的星期名称。浏览器兼容性: Intl.DateTimeFormat 是现代浏览器和Node.js环境中广泛支持的标准API。对于极老的浏览器,可能需要引入 polyfill。性能: 对于只需要一次性获取星期名称列表的场景,上述方法效率很高。如果需要在短时间内频繁获取,可以考虑将结果缓存起来。周日作为起始日: 如果你需要列表从周日开始,只需将 startDay 设置为 0 即可。

总结

通过巧妙结合 Intl.DateTimeFormat API的国际化能力和精确的日期计算逻辑,我们可以轻松地在JavaScript中获取到按周一至周日顺序排列的本地化星期短名称。这种方法不仅灵活,能够适应不同的语言环境,而且代码简洁高效,是处理国际化日期展示的推荐实践。掌握这一技巧,将大大提升您在构建多语言Web应用时的开发效率和用户体验。

以上就是使用JavaScript获取本地化星期短名称(周一至周日顺序)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1537863.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
优化循环网页抓取:实现健壮的Fetch请求重试机制
上一篇 2025年12月21日 04:30:14
JavaScript中实现健壮的Fetch请求:重试机制提升网络稳定性
下一篇 2025年12月21日 04:30:26

相关推荐

  • PHP如何利用缓存优化实时输出_PHP实时输出与缓存结合优化

    PHP实时输出需结合输出缓冲控制与flush()强制推送,同时考虑服务器和浏览器缓存影响;2. 长时间任务应使用APCu或Redis缓存频繁数据,避免重复计算;3. 动态页面可采用分块输出与片段缓存策略,静态内容从缓存读取,动态部分边生成边输出;4. 更优方案是通过异步任务与Redis存储进度,前端…

    2026年9月22日
    000
  • 递归实现列表排序检查与条件移除最大值

    本文详细介绍了如何使用Java递归方法处理整数列表。核心内容包括:首先检查列表是否已排序,如果已排序则直接返回false;如果未排序,则查找列表中的最大值。仅当最大值位于列表的起始或结束位置时,才将其移除并递归地继续处理列表。如果最大值位于列表中间,则打印当前列表并终止递归。 在数据处理和算法设计中…

    2026年9月22日
    000
  • 石墨文档如何创建在线表格并排序_石墨文档表格处理的高效技巧

    首先创建在线表格并进行排序,提升团队协作效率。打开石墨文档点击“新建”选择“表格”,支持从Excel导入数据、多页管理及多人协同编辑;选中数据区域后通过“数据”菜单进行单列或多条件排序,注意避免合并单元格影响范围,配合筛选功能更高效;利用快捷键跳转、自动调整列宽、冻结行列、使用模板、设置格式、添加评…

    2026年9月22日
    100
  • VS Code中Dockerized PHP项目:解决PHP版本冲突的教程

    本教程旨在解决在VS Code中开发Dockerized PHP项目时,VS Code默认识别宿主机PHP版本而非容器内PHP版本的问题。核心解决方案是利用VS Code的Remote – Containers扩展,实现直接在Docker容器内部进行代码开发,从而确保VS Code及其所…

    2026年9月22日
    200
  • UC浏览器为什么无法登录某些网站账号_UC浏览器部分网站无法登录原因及对策

    首先关闭广告过滤功能,清除缓存与Cookie,关闭云端加速,切换网络或DNS,最后尝试桌面模式或其他浏览器解决UC浏览器登录无响应问题。 如果您尝试在UC浏览器中登录某个网站账号,但页面无响应或提示错误,则可能是由于浏览器的安全策略、缓存问题或设置限制导致无法正常加载登录界面。以下是解决此问题的步骤…

    2026年9月22日
    100
  • 优化Spring Boot应用:构建高效通用的DTO与实体映射服务

    本文旨在解决Spring Boot项目中DTO与实体间重复映射的痛点。通过引入一个基于泛型的抽象服务层,结合ModelMapper工具,我们展示了如何构建一个类型安全、可重用的通用映射机制。此方案显著减少了样板代码,提升了代码的可维护性和开发效率,避免了手动类型转换的繁琐与潜在错误。 在构建基于sp…

    2026年9月22日
    100
  • OPPO Find X9系列前瞻:外观大变 全面升级无短板

    知名数码博主“数码闲聊站”近日透露了oppo find x9的外观设计,引发广泛关注。与前代产品采用的居中圆形镜头模组不同,find x9改用左上角垂直排列的方形矩阵摄像头,整体背部布局更显规整,视觉风格焕然一新,同时提升了握持手感,展现出oppo对用户反馈的高度重视。不过随后该博主迅速撤回相关微博…

    2026年9月22日
    000
  • VSCode搭建Python开发环境(附详细截图,小白也能学会)

    答案:搭建VSCode Python环境需安装Python并添加至PATH,安装VSCode及Python扩展,创建项目文件并选择正确解释器,通过虚拟环境隔离依赖,利用Pylance、Black、Flake8等工具提升开发效率,常见问题多为路径或环境配置错误,可通过检查解释器选择和安装路径解决。 在…

    2026年9月22日
    100
  • Java中递归处理列表:条件性移除最大值策略与实现

    本教程深入探讨了如何在Java中使用递归方法,根据特定条件(如列表是否已排序、最大值是否位于列表的首尾)来移除列表中的最大值。文章将详细阐述如何设计一个高效的递归算法,包括排序检查、最大值定位以及条件性移除的实现细节,并提供完整的代码示例和注意事项,帮助读者掌握递归在复杂列表操作中的应用。 引言:递…

    2026年9月22日
    000
  • 如何用Sublime导出MySQL数据表结构_生成Markdown或HTML格式文档

    要使用 sublime text 导出 mysql 数据表结构并生成 markdown 或 html 文档,需通过以下步骤操作:1. 使用 show create table 命令或 mysqldump 工具获取建表语句;2. 在 sublime 中整理字段信息,按字段名、类型、是否为空、键、默认值…

    2026年9月22日
    000
  • 解决PHP应用中本地文件更新后网页视图不刷新的缓存问题

    本文探讨了PHP应用中,本地JSON或图片文件更新后,网页视图无法实时刷新的常见问题。核心原因在于浏览器缓存机制。文章将提供多种解决方案,包括强制刷新、隐身模式诊断、以及通过URL参数、服务器配置(.htaccess)和文件版本控制来有效管理缓存,确保用户始终获取最新数据。 理解问题:本地文件更新与…

    2026年9月22日
    200
  • VSCode如何安装和使用插件 VSCode插件管理的高效方法

    安装插件需通过vscode扩展视图搜索并点击安装,部分插件需重启或配置后生效;2. 使用插件时可通过命令面板、上下文菜单、状态栏或自动语言特性调用功能,并在设置中自定义行为;3. 高效管理应定期审视插件使用频率,禁用或卸载不常用者,关注性能影响,利用“开发者: 显示正在运行的扩展”识别资源占用高的插…

    2026年9月22日
    200
  • Java Stream API:从嵌套集合中提取唯一值的高效实践

    本文深入探讨如何利用Java Stream API,从包含嵌套集合的对象列表中高效地提取唯一的字符串值。我们将重点介绍flatMap()和mapMulti()这两种强大的流操作,演示它们如何替代传统的嵌套循环,从而实现代码的简洁性、可读性以及潜在的性能优化。 在java应用开发中,我们经常会遇到处理…

    2026年9月22日
    100
  • safari浏览器如何将网页保存为PDF_safari浏览器网页保存为PDF方法

    Safari浏览器支持将网页保存为PDF,可通过三种方式实现:1. 使用打印功能,点击“文件”→“打印”,选择“另存为PDF”并设置参数后保存;2. 点击共享按钮,选择“创建PDF”,生成后存储到指定位置;3. 利用快捷指令应用创建自动化流程,获取当前网页并转换为PDF自动归档。 如果您在浏览网页时…

    2026年9月22日
    100
  • 使用Java Selenium验证表格数据排序:金额列的升序与降序检查

    本教程详细介绍了如何利用Java Selenium WebDriver验证网页表格中金额列的排序功能。文章涵盖了从环境配置、登录应用到数据提取、清洗、数值转换,再到实现表格数据(特别是金额数据)的升序或降序验证的完整流程。通过示例代码,演示了如何获取页面元素、处理文本数据,并使用JUnit进行断言,…

    2026年9月22日
    100
  • 夸克浏览器隐私设置在哪里调整_夸克浏览器隐私设置调整方法

    首先进入夸克浏览器设置菜单调整隐私选项,然后通过启用无痕模式避免浏览记录留存,最后在系统权限与浏览器反跟踪功能中关闭多余权限并开启安全浏览,全面加强隐私保护。 如果您希望在使用夸克浏览器时更好地保护个人隐私,防止数据被追踪或泄露,可以通过调整其内置的隐私设置来实现更安全的浏览体验。 本文运行环境:小…

    2026年9月22日
    200
  • Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)

    could not find doxygen (missing: doxygen_executable)  使用cmake .. 有时候会遇到如下问题: 代码语言:javascript代码运行次数:0运行复制 $ cmake ..– The CXX compiler identification …

    2026年9月22日
    100
  • 解决Spring Boot Actuator升级后Tomcat指标缺失问题

    本文旨在解决Spring Boot Actuator升级至2.7.0及更高版本后,部分Tomcat指标(如tomcat.cache.access、tomcat.global.error)在MetricsEndpoint中缺失的问题。通过在application.properties中配置server…

    2026年9月22日
    600
  • MAC的Safari浏览器怎么安装插件_MAC Safari浏览器安装插件教程

    首先通过App Store安装Safari扩展,打开Safari浏览器选择“Safari 浏览器扩展”进入下载页面,找到所需插件点击“获取”安装;其次可手动安装.safariextz文件,双击下载文件按提示完成安装并配置权限;最后在Safari设置中启用插件,进入“扩展”标签页勾选对应插件,调整功能…

    2026年9月22日
    100
  • Laravel 8 登录后重定向到仪表盘:完整教程

    本教程详细阐述了在 Laravel 8 中实现用户登录后重定向到仪表盘的多种方法。我们将探讨 Laravel 默认的重定向机制、如何正确配置仪表盘路由及其中间件,并提供通过自定义 LoginController 实现精确重定向的示例代码。通过本文,您将全面掌握 Laravel 认证后的重定向流程,并…

    2026年9月22日
    500

发表回复

登录后才能评论
关注微信