当前位置: 首页 > 面试题库 >

如何在Java中设置尊重用户操作系统设置的日期和时间格式

韩麒
2023-03-14
问题内容

我在Windows 7机器上运行Java应用程序,在该机器上,我的区域设置已设置为将日期格式设置为YYYY-mm-
dd,将时间格式设置为HH:mm:ss(例如“ 2011-06-20 07:50:28”)
。但是,当我使用DateFormat.getDateTimeInstance().format格式设置日期时,却看不到“
2011年6月20日上午7:50:28”。我需要做些什么来格式化客户自己的操作系统来显示日期的日期格式?

这是我所讨论的代码如下所示:

File selGameLastTurnFile = selectedGame.getLastTurn ().getTurnFile ();
Date selGameModifiedDate = new Date (selGameLastTurnFile.lastModified());
if (selectedGame.isYourTurn ())  {
    gameInfo = Messages.getFormattedString ("WhoseTurnIsIt.Prompt.PlayTurn",  //$NON-NLS-1$
            FileHelper.getFileName (selGameLastTurnFile), 
            DateFormat.getDateTimeInstance().format(selGameModifiedDate));
}  else  {
    gameInfo = Messages.getFormattedString ("WhoseTurnIsIt.Prompt.SentTurn",  //$NON-NLS-1$
            selGameLastTurnFile.getName (), 
            DateFormat.getDateTimeInstance().format(selGameModifiedDate));
}

Messages.getFormattedString呼叫使用MessageFormat把日期成句,这将是这样的:

转牌为“ QB Nat vs Ian 008”(2011年6月20日上午7:50:28接收)

但是,我的操作系统设置被设置为如上所述格式化日期,并且我希望看到以下内容:

转牌’QB Nat vs Ian 008’(2011-06-20 07:50:28接收)

我在这里和其他Java编程站点中进行了搜索,但找不到答案,但这似乎是一件很明显的事情,我想我似乎缺少了一些明显的东西。


问题答案:

您不能在纯Java中做到这一点。Sun / Oracle不可能使该系统独立。

快速浏览.NET库会显示此页面 -引用:

用户可以选择通过“控制面板”的“区域和语言选项”部分覆盖与Windows当前区域性相关的某些值。例如,用户可以选择以其他格式显示日期或使用区域性默认语言以外的货币。如果CultureInfo.UseUserOverride属性设置为true,则还将从用户设置中检索CultureInfo.DateTimeFormat对象,CultureInfo.NumberFormat对象和CultureInfo.TextInfo对象的属性。

如果需要此功能,我建议您以依赖于Windows的方式进行此操作(例如,按照@laz建议访问Windows注册表)。



 类似资料:
  • 我正在尝试格式化中的日期时间值,以使其与格式匹配,我收到以下错误: 找不到分离符号找到了意外数据。发现意外数据。跟踪数据 Im在我的模型中使用自定义格式: 它对创建方法控制器很有效,没有问题,当尝试更新时出错,我认为与值如何存储在数据库中有关。 使用修补程序,我在模型中检索updated_at的值,并以下一种格式显示: 因此,当Im更新此值时,使用的格式为: 我认为它应该是类似于但是不起作用,我如

  • 我在想是否有人能帮我。 我是一个非常新的ASP我想格式化当前的日期和时间如下: 但我能做的只有以下几点 有人能帮我一下吗。

  • 预订类别: 这是保存到导致错误的文本文件中的内容: 1:java.util.GregorianCalendar[time=851385600000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.zoneInfo[id=“欧洲/伦敦”,offset=0,dstSavings=3600000,use

  • 问题内容: 我一直在开发使用以下代码的Android应用程序: 我需要从当前时刻开始8小时后获取日期,并且我希望该日期具有24小时格式,但是我不知道如何通过SimpleDateFormat进行设置。我还需要该日期具有格式。 问题答案: 这将为您提供24小时格式的日期。

  • 例如,我有30个用户,我想为每个人设置随机start_day和随机end_day的假期。我想使用日期,而不是LocalDate。如果我必须使用LocalDate,这就是答案。 我想用Date来做这件事,因为在JSON的Date格式中,带“Date”的是“yyyy/mm/dd”,另一方面,如果我使用LocalDate,JSON中的格式是这样的

  • 问题内容: 我希望服务器始终以HTML中的UTC形式提供日期,并让客户端站点上的JavaScript将其转换为用户的本地时区。 如果我能以用户的区域设置日期格式输出,则为奖励。 问题答案: 以UTC日期开头的最简单的方法似乎是创建一个新对象,并使用这些方法将其设置为所需的日期/时间。 然后,各种方法将提供本地化输出。 例: