SimpleDateFormat 在模拟器上工作正常,但在设备上错误

2024-04-16

我使用 SimpleDateFormat 从日期中提取相关信息。它在模拟器中运行得很好,但是在设备上测试时它无法正确格式化。 Logcat 在模拟器中正确显示,但在手机上再次显示错误。

    private String getSectionHeaderTitle(Date date) {
    SimpleDateFormat dayFormat = new SimpleDateFormat("E");
    SimpleDateFormat monthFormat = new SimpleDateFormat("MMM");
    SimpleDateFormat dayNumFormat = new SimpleDateFormat("dd");
    SimpleDateFormat yearFormat = new SimpleDateFormat("yyyy");

    String dayString = dayFormat.format(date);
    String monthString = monthFormat.format(date);
    String dayNumString = dayNumFormat.format(date);
    String yearString = yearFormat.format(date);

    String headerTitle = dayString + ", " + monthString + " "
            + dayNumString + " " + yearString;

    Log.i(TAG, "Date " + date + " Day " + dayString + ", " + " Month "
            + monthString + " Year " + yearString);
    Log.d(TAG, headerTitle);
    return headerTitle;
}

模拟器 2.3.3 的日志:

09-09 13:13:55.435: INFO/EventsListActivity(4252): Date 2011-12-11 Day Sun,  Month Dec Year 2011
09-09 13:13:55.435: DEBUG/EventsListActivity(4252): Sun, Dec 11 2011

设备 2.3.4 的日志:

09-09 18:30:34.203: INFO/EventsListActivity(7962): Date 2011-10-16 Day 1,  Month 10 Year 2011
09-09 18:30:34.203: DEBUG/EventsListActivity(7962): 1, 10 16 2011

任何帮助是极大的赞赏。


SimpleDateFormat 使用的符号(即“Sun”与“1”)是通过 SimpleDateFormat 的 DateFormatSymbols 成员设置的。

在您提供的代码中,您没有显式设置区域设置,因此使用系统的默认区域设置,该区域设置中存储的部分信息是 DateFormatSymbols 对象。

一般来说,相信默认区域设置是正确的从来都不是一个好主意,它可能因系统和其他因素而异。

这正是上面代码中发生的情况,模拟器具有与设备不同的默认区域设置,因此具有不同的 DateFormatSymbols 集。根据您的输出,我猜测设备默认为 Locale.ROOT 语言环境,它只打印出没有语言的整数值。

最简单的修复方法是手动设置 SimpleDateFormat 对象使用的区域设置。

Locale locale = Locale.US;  //or whatever you want, see note below

SimpleDateFormat dayFormat = new SimpleDateFormat("E", locale);
SimpleDateFormat monthFormat = new SimpleDateFormat("MMM", locale);
SimpleDateFormat dayNumFormat = new SimpleDateFormat("dd", locale);
SimpleDateFormat yearFormat = new SimpleDateFormat("yyyy", locale);

See http://developer.android.com/reference/java/util/Locale.html#default_locale http://developer.android.com/reference/java/util/Locale.html#default_locale获取可用的区域设置,或者您可以通过 Locale.getAvailableLocales() 方法查看它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SimpleDateFormat 在模拟器上工作正常,但在设备上错误 的相关文章

  • 从队列更新活动的最佳方法

    我有一个LinkedBlockingQueue在我的 生产者 调解者 消费者 模型中的调解者中 Producer 首先更新将 Mediator 添加到 ActivityQueue 中 接下来 消费者 活动在队列中等待 侦听并获取下一个项目
  • 有关 paddingStart 使用的冲突 lint 消息

    API 17 RTL 支持发布后 我将以下内容添加到我的清单中 android supportsRtl true 这导致 Lint 在我的视图中有 paddingLeft Right 的地方正确地向我发出这些警告 考虑添加 android
  • Android STFP 库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在我的 Android 项目中使用 SFTP 安卓已经有了吗 SFTP 库 还是我必须实现它 I
  • IntentService、Service 或 AsyncTask

    实现这一点的最佳方法是什么 我有一个 Android 应用程序 它将使用我的 python 服务器来允许两部手机之间进行轮流通信 回合意味着他们在一轮开始之前不能互相交谈 一旦他们发送一条消息 他们就不能发送另一条消息 直到对方做出回应 然
  • Notification.Builder 中 setGroup() 的用途是什么?

    我对目标的理解有些困难setGroup http developer android com reference android app Notification Builder html setGroup java lang String
  • Mesibo 通话 UI 未更新

    我正在尝试更改 Mesibo Call UI 的配置 但它并没有改变 我尝试如下 MesiboCallConfig mesiboCallConfig new MesiboCallConfig mesiboCallConfig backgro
  • Android Studio:Android 设备监视器未显示我的设备

    我的真实设备是索尼 Xperia c6502安卓版本4 3 我确定我将其连接到我的计算机然后打开开发者选项 USB调试 on 在 SDK 管理器中 Google USB 驱动程序已安装 I downloaded Xperia Z Drive
  • AOSP 中 android.Build.SERIAL 何时何地生成?

    我知道android Build SERIAL是在第一次设备启动时生成的 但我无法准确定位位置和时间 我正在建造AOSP Jelly Bean Android平板电脑 nosdcard 第二个问题 这个是序列号吗 really对所有人来说都
  • 仅在 Android 应用程序中使用 XHDPI 可绘制对象?

    如果您计划在不久的将来支持 LDPI MDPI HPDI 或许还有 XHDPI 那么是否可以在项目中仅包含 XHDPI 可绘制对象并让设备将其缩放到所需的分辨率 我已经测试过在 Photoshop 中将可绘制对象的大小调整为 MDPI 和
  • 将 firebase auth 与 google app engine 云端点集成

    有人可以指定 使用一些示例代码 如何验证谷歌云端点中的 firebase 令牌吗 最近提出的问题根本没有澄清 如何将 Firebase 身份验证与 Google 应用引擎端点集成 https stackoverflow com questi
  • 无法在 Java 中输出正确的哈希值。怎么了?

    在我的 Android 应用程序中 我有一个 SHA256 哈希值 我必须使用 RIPEMD160 消息摘要算法进一步对其进行哈希值 我可以输出任何字符串的正确 sha256 和ripemd160 哈希值 但是当我尝试使用ripemd160
  • popupBackground 与 Material Design 相关的问题

    我一直致力于将我的应用程序更新为 Material Design 我有一个使用选项卡的应用程序 由于某种原因 每当我使用 android popupBackground 设置下拉菜单颜色时 它就会崩溃 我设置了一个带有选项卡的默认项目并使用
  • Android - 正确使用 invalidateOptionsMenu()

    我一直在寻找很多invalidateOptionsMenu 我知道它的作用 但我想不出这种方法在现实生活中有用的任何例子 我的意思是 例如 假设我们要添加一个新的MenuItem to our ActionBar 我们可以简单地获取菜单on
  • 如何在 Android 中保存 Edittext 中的文本而不丢失文本的粗体、斜体等功能

    我想做的就是从 Edittext 中获取文本 该文本具有粗体和斜体等功能 并将其保存在文本文件中 但是当我读回并显示它时 这些功能丢失了 它们不显示 如何通过将文本保存在文本文件或任何文件中来保持丰富的功能 您可以使用Html toHtml
  • 从多个 TextView 中选择文本

    如何在android中从多个文本视图中选择文本 我已经尝试过以下代码 该代码一次仅适用于一个文本视图 我想一次性从许多文本视图中复制文本 android textIsSelectable true 你不能同时这样做 您需要在单个文本视图中设
  • Android:如何在布局中放置纯色矩形?

    我有一个可以很好地膨胀的relativelayout 我想在顶部添加一个跨越布局宽度的纯色矩形 我尝试将以下内容放入我的 xml 中
  • SQLiteDatabase.openDatabase 与 SQLiteOpenHelper.getReadableDatabase

    这两种方法有什么区别吗 两者都返回一个打开的 SQLiteDatabase 如果数据库不存在 两者都可以创建数据库 当需要读 写时 SQLiteOpenHelper 还具有 getWriteableDatabase 我应该使用哪种方法以及在
  • Android BLE 扫描永远找不到设备

    几天以来 我尝试在我的应用程序中实现 BLE 连接 我知道我尝试连接的设备功能齐全 因此问题一定是我的代码 我用BluetoothLeScanner startScan 方法 但回调方法永远不会被调用 public void startSc
  • Android中绑定适配器有什么用?

    我一直在阅读有关Android中绑定适配器的文章 但我似乎不明白它 何时使用绑定适配器 有人可以用一个简单的例子来解释它吗 我读过的一篇文章在主活动中有一个绑定适配器 绑定适配器有一个参数 toastMessage 显然 只要 toastM
  • 如何让用户在android列表视图中选择主题?

    我有一个带有两个标签的列表视图 标题和副标题 我想要深色和浅色背景作为用户选项 标题具有 textAppearanceMedium 副标题具有 textAppearanceSmall 我希望样式 MyTheme Dark 具有白色文本 My

随机推荐

  • 当超过两次下载正在进行时 HttpSendRequest 阻塞

    在我们的程序中 每次需要发出HTTP请求时都会创建一个新线程 并且可以有多个线程同时运行 我遇到的问题是 如果我已经有两个线程正在运行 它们在读取时循环InternetReadFile 打电话后HttpSendRequest 任何后续尝试调
  • pandas.to_json 以特定形式输出日期格式

    数据框中日期的原始形式是 Date 2018 09 17 12 83 12 92 12 38 12 65 12 65 1937329 0 2018 09 10 12 92 13 12 12 81 12 83 12 83 1150470 0
  • C++ boost enable_if问题

    我有什么办法可以简化以下陈述吗 可能 使用boost enable if 我有一个简单的类结构 Base基类 Derived1 Derived2继承自Base 我有以下代码 template
  • 嵌套启动 --watch 更改后不重新加载(嵌套启动 --watch 不工作)

    我安装了 Nest js 当我运行 npm run start dev 运行 start watch 时 一切正常并且出现绿色日志 问题是 当我更新代码中的某些内容时 nest 不再更新 并且卡在下图中 我确信这不是我的代码的问题 因为我在
  • Dojo 拖放:如何检索项目的顺序?

    我创建了一个 Source 对象并进行配置 通过创建者 以便它呈现一组数据供我的用户根据需要进行排序 这一切工作正常 但是 我无法弄清楚如何在用户重新排序后检索数据 getAllNodes 返回 dom 节点 我需要原始数据对象 这真的很简
  • java - 文件lastModified与读取文件

    我正在使用一个文件 并且需要在修改文件时更新 java 中的值 所以 我想使用检查修改时间lastModified of File类 如果修改 则读取文件并更新文件中的单个属性 我的疑问是 是lastModified与从文件中读取单个属性
  • 从 C# .net 调用 python.py

    我在从 C 调用 python 脚本时遇到问题 我的 python 脚本根据参数 1 和参数 2 计算一个值并发送计算出的值 我无法获得计算值 比如说 我正在使用一个简单的 python 类并调用 C 以下是 python py impor
  • C库函数获取活动线程数

    我正在用 C 语言开发一个多线程 Unix 应用程序 有没有一种简单的方法来获取同时活动线程的数量 如果库已经可以为我完成的话 我不想编写代码来跟踪活动线程的数量 我正在使用 POSIX pthreads 并且我正在尝试为 Unix 和类
  • 重命名字典中的键

    我想重命名字典的键是整数 并且我需要它们是带有前导零的整数 以便它们正确排序 例如我的钥匙是这样的 1 101 11 我需要它们是 001 101 011 这就是我现在正在做的事情 但我知道有更好的方法 tmpDict for oldKey
  • 如何在 ES6 中使用所有默认值解构选项参数?

    我将 ES6 功能与 babel 编译器一起使用 我有一个将选项对象作为参数的函数 function myFunction option1 true option2 whatever console log option1 option2
  • 如何在使用支持库时构建带有 ListView 的 AppWidget?

    我想在早期版本的 Android 上的 AppWidget 中使用 ListView 拉格纳的回答在这个问题中 https stackoverflow com questions 8846743 app widget with listvi
  • 如何删除供应商代码插入的回调?

    我正在使用的 gem 插入了一个我想删除的 after save 回调 在我看来 从数组中删除符号比用猴子补丁解决问题更干净 如何访问回调数组 class UserSession lt Authlogic Session Base Don
  • symfony 2 中相同的 url 需要多个角色

    这是我的 security yml 的访问控制列表的样子 access control path admin roles IS AUTHENTICATED FULLY path admin roles ROLE ADMIN 我想要做的是 用
  • 为什么最多 4 个元素的集合是有序的,而更大的元素则不是?

    Given val xs1 Set 3 2 1 4 5 6 7 val ys1 Set 7 2 1 4 5 6 3 xs1 and ys1两者都导致scala collection immutable Set Int Set 5 1 6 2
  • 如何使用 Homebrew cask 安装 Sublime Text 3

    如何使用 Homebrew cask 安装 Sublime Text 3 当使用 Homebrew 的搜索时 我只看到 Sublime Text 2 我什至尝试点击自制软件 版本 https github com Homebrew home
  • 最容易实现的 Voronoi 图算法? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 实现 Voronoi 图的简单算法有哪些 我找不到任何专门以伪形式出现的算法 请分享一些 Vorono
  • 新值 EditText 未显示,没有任何错误

    编辑 顺便说一句 如果我在范围内硬编码 edt4 setText any text 它会显示该值 编辑2 尝试重建 清理项目 这可能是 settext 方法中的错误 看起来我做得对 当我用 settext 查看其他代码时 编辑3 start
  • 编译为 WebAssembly 时无法使 image::load_from_memory() 工作

    我正在尝试使用 Rust 将图像从 JavaScript 加载到 WebAssembly图像箱 https crates io crates image 我有以下 Rust 代码 extern crate image extern crat
  • 如何解决 Eclipse 中未解决的包含:

    我在 eclipse 中构建了一个简单的程序 include
  • SimpleDateFormat 在模拟器上工作正常,但在设备上错误

    我使用 SimpleDateFormat 从日期中提取相关信息 它在模拟器中运行得很好 但是在设备上测试时它无法正确格式化 Logcat 在模拟器中正确显示 但在手机上再次显示错误 private String getSectionHead