Mac OS X 中的哪些设置会影响 Java 中的“Locale”和“Calendar”?

2023-12-10

这两个问题促使我想知道 Mac OS X 中的哪些设置会影响Locale and CalendarJava 中的默认值和行为:

  • WEEK_OF_YEAR 在不同机器上不一致
  • 为什么 Calendar.getInstance() 无法使用默认区域设置?

这些讨论的关键是日历中的这两个属性:

  • 一周的第一天
  • 第一周最少天数

这两个值的默认值都是1在 Java 7 和 8 中,在默认的美国运行时。什么会导致报告其他值?


我看到了一些关于影响 java.util.Calendar 的这些属性的特殊行为。

结论

事实确定:

  • 爪哇Locale是由Language在系统偏好设置中。
  • 日历的两个属性不受通过 Mac 更改的 Java 区域设置的影响Language。相反,它们是通过选择一个来确定的Region在系统偏好设置中。
  • 奇怪的是,可能是一个错误,手动选择一周的第一天系统偏好设置中的弹出菜单无法影响 Java 中的等效属性。作为选择的一部分影响 Mac 设置Region影响 Java,但手动选择弹出菜单则不会。
  • 通过 Mac 设置 Java 区域设置Language设置不会影响日历的属性,但会将区域设置传递给日历的构造函数does影响其属性(明显矛盾)。

Details

运行此代码作为测试。

import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

public class TestCalendar
{

    public static void main( String[] args )
    {
        Locale locale = Locale.getDefault();
        Calendar c = Calendar.getInstance();
        c.setTime( new Date( new Long( 1293840000000l ) ) );  // First moment of the year 2011 in UTC.
        System.out.println( "Locale: " + locale + " | FirstDayOfWeek: " + c.getFirstDayOfWeek() + " | MinimialDaysInFirstWeek: " + c.getMinimalDaysInFirstWeek() );
    }
}

在 Mac OS X (Mavericks) 上托管的 Parallels 9 虚拟机中使用 Mac OS X 10.8.5 (Mountain Lion),并安装 Java 8 Update 11美国我在安装操作系统期间选择的区域设置System Preferences > Language & Text.

Screen shot of window after choosing Apple menu > System Preferences > Language & Text in Mac OS X Mountain Lion

系统偏好设置 > 语言和文本 > 区域 > 一周的第一天

奇怪的是,变化First day of week on the Region选项卡没有效果。 Java报告FirstDayOfWeek: 1我是否将该弹出菜单设置为“星期日”或“星期一”。

Locale: en_US | FirstDayOfWeek: 1 | MinimialDaysInFirstWeek: 1

重新启动 NetBeans IDE 没有帮助。重新启动 Mac(虚拟机)没有帮助。

系统偏好设置 > 语言和文本 > 区域

On the Region选项卡,检查显示所有地区复选框以查看更多区域。选择French > France。立即运行 IDE。无需重新启动 IDE 或操作系统,甚至无需关闭系统偏好设置 window.

Locale: en_US | FirstDayOfWeek: 2 | MinimialDaysInFirstWeek: 4

两个帐户都很有趣。

  • 现在我们知道了Region设置会影响这两个关键的日历设置,但Locale没有改变。价值2正如 FirstDayOfWeek 的意思Monday,这对于法国(以及世界大部分地区)来说是正确的。
  • 另一个问题很奇怪,也许是一个错误:一周的第一天当设置为较大区域更改的一部分时,弹出窗口似乎会影响 Java,但手动选择该弹出窗口不会影响相关的 Java 属性。

重置Region弹出返回到United States恢复 Java 属性,这是一致且符合预期的:

Locale: en_US | FirstDayOfWeek: 1 | MinimialDaysInFirstWeek: 1

系统偏好设置 > 语言和文本 > 语言

On the Language选项卡、拖动Français(法语)位于列表顶部,因此它出现在英语之前。

立即运行 IDE。

Locale: fr_FR | FirstDayOfWeek: 1 | MinimialDaysInFirstWeek: 1

再次,有趣。现在我们知道了JavaLocale由Mac决定Language环境。我们知道这对相关的日历属性没有影响。

所以你认为麦克Language决定 Java Locale,Java Locale 决定not影响日历属性?阅读上面内容时是正确的,但是阅读下一节时错误,我们看到 Java Locale 设置了另一种方式can影响日历属性。很混乱。

传递 Java 区域设置

又发现一个矛盾。让我们将 Mac 恢复为美国默认设置: (1) 英文位于顶部Language列表,(2) 区域设置为美国.

更改我们的代码以将区域设置传递给日历的构造函数。

Calendar c = Calendar.getInstance( Locale.FRANCE );

这会影响日历属性:

FirstDayOfWeek: 2 | MinimialDaysInFirstWeek: 4

所以,令人困惑的矛盾是:

  • 通过 Mac 设置 Java 区域设置Language does not影响日历的属性。
  • 将区域设置显式传递给日历构造函数does影响其属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mac OS X 中的哪些设置会影响 Java 中的“Locale”和“Calendar”? 的相关文章

  • 如何使用 FileChannel 将一个文件的内容附加到另一个文件的末尾?

    File a txt好像 ABC File d txt好像 DEF 我正在尝试将 DEF 附加到 ABC 所以a txt好像 ABC DEF 我尝试过的方法总是完全覆盖第一个条目 所以我总是最终得到 DEF 这是我尝试过的两种方法 File
  • Android Studio 在编译时未检测到支持库

    由于 Android Studio 将成为 Android 开发的默认 IDE 因此我决定将现有项目迁移到 Android studio 中 项目结构似乎不同 我的项目中的文件夹层次结构如下 Complete Project gt idea
  • 在浏览器中点击应用程序时播放框架挂起

    我正在 Play 中运行一个应用程序activator run 也许 5 次中有 3 次 它会挂起 当我去http localhost 9000 它就永远坐在那里旋转 我看到很多promise timed out错误也 我应该去哪里寻找这个
  • java中删除字符串中的特殊字符?

    如何删除字符串中除 之外的特殊字符 现在我用 replaceAll w s 它删除了所有特殊字符 但我想保留 谁能告诉我我该怎么办 Use replaceAll w s 我所做的是将下划线和连字符添加到正则表达式中 我添加了一个 连字符之前
  • 如何在 Java 中禁用 System.out 以提高速度

    我正在用 Java 编写一个模拟重力的程序 其中有一堆日志语句 到 System out 我的程序运行速度非常慢 我认为日志记录可能是部分原因 有什么方法可以禁用 System out 以便我的程序在打印时不会变慢 或者我是否必须手动检查并
  • 如何在jsp代码中导入java库?

    我有以下jsp代码 我想添加 java io 等库 我怎样才能做到这一点
  • 请求位置更新参数

    这就是 requestLocationUpdates 的样子 我使用它的方式 requestLocationUpdates String provider long minTime float minDistance LocationLis
  • 如何在 JFreeChart TimeSeries 图表上显示降雨指数和温度?

    目前 我的 TimeSeries 图表每 2 秒显示一个位置的温度 现在 如果我想每2秒显示一次降雨指数和温度 我该如何实现呢 这是我的代码 import testWeatherService TestWeatherTimeLapseSer
  • 检查 protobuf 消息 - 如何按名称获取字段值?

    我似乎无法找到一种方法来验证 protobuf 消息中字段的值 而无需显式调用其 getter 我看到周围的例子使用Descriptors FieldDescriptor实例到达消息映射内部 但它们要么基于迭代器 要么由字段号驱动 一旦我有
  • 尝试使用 Ruby Java Bridge (RJB) gem 时出现错误“无法创建 Java VM”

    我正在尝试实现 Ruby Java Bridge RJB gem 来与 JVM 通信 以便我可以运行 Open NLP gem 我在 Windows 8 上安装并运行了 Java 所有迹象 至少我所知道的 都表明 Java 已安装并可运行
  • org.jdesktop.application 包不存在

    几天以来我一直在构建一个 Java 桌面应用程序 一切都很顺利 但是今天 当我打开Netbeans并编译文件时 出现以下编译错误 Compiling 9 source files to C Documents and Settings Ad
  • 将 JSON 参数从 java 发布到 sinatra 服务

    我有一个 Android 应用程序发布到我的 sinatra 服务 早些时候 我无法读取 sinatra 服务上的参数 但是 在我将内容类型设置为 x www form urlencoded 之后 我能够看到参数 但不完全是我想要的 我在
  • Windows 上的 Nifi 命令

    在我当前的项目中 我一直在Windows操作系统上使用apache nifi 我已经提取了nifi 0 7 0 bin zip文件输入C 现在 当我跑步时 bin run nifi bat as 管理员我在命令行上看到以下消息 但无法运行
  • 查看Jasper报告执行的SQL

    运行 Jasper 报表 其中 SQL 嵌入到报表文件 jrxml 中 时 是否可以看到执行的 SQL 理想情况下 我还想查看替换每个 P 占位符的值 Cheers Don JasperReports 使用 Jakarta Commons
  • android Accessibility-service 突然停止触发事件

    我有一个 AccessibilityService 工作正常 但由于开发过程中的某些原因它停止工作 我似乎找不到这个原因 请看一下我的代码并告诉我为什么它不起作用 public class MyServicee extends Access
  • 如何修复“sessionFactory”或“hibernateTemplate”是必需的问题

    我正在使用 Spring Boot JPA WEB 和 MYSQL 创建我的 Web 应用程序 它总是说 sessionFactory or hibernateTemplate是必需的 我该如何修复它 我已经尝试过的东西 删除了本地 Mav
  • java迭代器内部是如何工作的? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个员工列表 List
  • com.jcraft.jsch.JSchException:身份验证失败

    当我从本地磁盘上传文件到远程服务器时 出现这样的异常 com jcraft jsch JSchException Auth fail at org apache tools ant taskdefs optional ssh Scp exe
  • 中断连接套接字

    我有一个 GUI 其中包含要连接的服务器列表 如果用户单击服务器 则会连接到该服务器 如果用户单击第二个服务器 它将断开第一个服务器的连接并连接到第二个服务器 每个新连接都在一个新线程中运行 以便程序可以执行其他任务 但是 如果用户在第一个
  • java8 Collectors.toMap() 限制?

    我正在尝试使用java8Collectors toMap on a Stream of ZipEntry 这可能不是最好的想法 因为在处理过程中可能会发生异常 但我想这应该是可能的 我现在收到一个我不明白的编译错误 我猜是类型推理引擎 这是

随机推荐

  • Visual C++:将int转换为字符串指针

    如何在 Visual C 中将整数转换为字符串指针 使用字符串流 include
  • 从 TSQL 调用 Web 服务的最佳方式

    从 TSQL 调用 Web 服务的最佳方式是什么 我想编写一些调用网络服务的触发器 有没有普遍使用的最佳实践 需要在 SQL Server 2005 和 2008 中处理实现 从我所听到的一切来看 从数 据库 内 的任何地方进行网站调用都不
  • 当位置为负数时如何有滚动条?

    当位置为正时 滚动条可以正常工作 但当 left 为负数时 滚动条不会出现 当元素位于左侧或右侧时 如何才能有滚动条 样本在这里 container position relative width 350px height 250px ba
  • 多维数组差异

    我有 2 个数组 big array array array array correct gt FALSE answer gt false answer1 array correct gt FALSE
  • 序列A中的A代表什么?

    什么是sequenceATraversable 代表什么 为什么最后是大写A 我已经学习 Haskell 几个月了 这是困扰我一段时间的事情之一 A 代表Applicative 如在约束中sequenceA s type sequenceA
  • 字符串资源换行 /n 不可能吗?

    似乎无法添加新行 n到 XML 资源字符串 还有另一种方法可以做到这一点吗 使用反斜杠而不是正斜杠 n
  • Flutter:使用凭据发布请求

    如何从 flutter 发出发布请求 我需要使用用户的电子邮件地址和密码对用户进行身份验证 请帮忙 尝试使用以下代码 http post url body email email password password then respons
  • 使用按位运算符更改符号

    如何使用按位运算符更改 int 的符号 显然我们可以使用x 1 or x 1 有没有最快的方法来做到这一点 我做了一个小测试 如下所示 只是为了好奇 public class ChangeSign public static void ma
  • IOError: [Errno 输入溢出] -9981

    我试图在 Raspberry Pi B 型板上的 Raspbian 上执行 PyAudio python 捕获程序 但出现错误 Traceback most recent call last File home pi pythonsound
  • 为什么Python3中没有xrange函数?

    最近我开始使用Python3 它缺乏xrange hurts 简单的例子 Python2 from time import time as t def count st t x for x in xrange 10000000 if x 4
  • 在 Laravel 5 中使用 Google Drive Api

    我是 Laravel 的新手 当然这个问题有一个明显的答案 但我无法将 Laravel 5 与 Google Api 连接起来 我像往常一样使用 Composer 安装了 Api 它位于我的供应商文件夹中 但现在我不知道如何使用它 我还没有
  • 保存 WooCommerce 订单上产品属性的自定义交货日期

    我有一个自定义属性 其中产品有不同的取货时间 我想将此日期作为自定义字段添加到我的厕所订单中 以通过 cronjob 通知我的客户订单已准备好取货 使用下面的代码我得到了错误的日期 有人能告诉我这里出了什么问题吗 foreach order
  • Node.js——如何以最快的方式获取 Google Drive API 的内容

    我正在尝试使用 Node js 和 Google Drive API 制作一个网站 为此 在从 google 获取 API 密钥后 我可以访问如下链接 https www googleapis com drive v3 files q 27
  • 如何在 Angular 4 中获取 HttpClient 状态代码

    在Http模块中 我可以使用response status轻松获取响应代码 但是当我使用HttpClient模块时 我无法获取response status 它显示未定义 那么 我如何使用 Angular 4 中的 HttpClient 模
  • 如何使用 Angularjs 制作级联下拉菜单?

    在这里 我添加了带有子型号的移动品牌名称列表 我的期望 1 这里多次列出诺基亚和三星 HTC 如何避免列表中重复出现相同的名称2 当我在第一个下拉列表中选择诺基亚时 一个新的下拉列表应出现在第一个下拉列表中 它应显示诺基亚品牌型号列表 如果
  • 动态 JComboBox

    我有以下数据 字符串 Course1 A1 Course1 A2 Course2 B1 Course2 B2 Course2 B3 Course2 B4 Course3 C1 Course3 C2 我想创建两个J组合框 JComboBox1
  • Spark Dataframe:从 Map 类型生成元组数组

    我的下游源不支持 Map 类型 而我的源支持 Map 类型 因此发送此类型 我需要将此映射转换为结构数组 元组 Scala 支持 Map toArray 它为您创建一个元组数组 这似乎是我需要在 Map 上进行转换的函数 a b key1
  • 动态加载的 JavaScript 库何时可用?

    我编写了 JavaScript 库来使用文件保存器 js及其相关的库 但是 我不想在有人想要使用我的库时总是加载 FileSaver js 我不想强迫他们加载所有与 FileSaver 相关的 JavaScript 库script标签本身
  • Java:d​​ll之间的切换取决于系统架构(32/64)

    我有一个 Java 程序使用一些 dll 由于这些嵌入的 dll 必须针对特定的系统架构 32 或 64 位 构建 我想创建一种方法 东西 允许我的程序在 32 64 位版本的 dll 之间切换 或者在程序运行时禁用库加载 在 64 位系统
  • Mac OS X 中的哪些设置会影响 Java 中的“Locale”和“Calendar”?

    这两个问题促使我想知道 Mac OS X 中的哪些设置会影响Locale and CalendarJava 中的默认值和行为 WEEK OF YEAR 在不同机器上不一致 为什么 Calendar getInstance 无法使用默认区域设