`

Android日期时间格式国际化

阅读更多
在做多语言版本的时候,日期时间的格式话是一个很头疼的事情,幸好Android提供了DateFormate,可以根据指定的语言区域的默认格式来格式化。直接贴代码:
public static CharSequence formatTimeInListForOverSeaUser(
final Context context, final long time, final boolean simple,
Locale locale) {
final GregorianCalendar now = new GregorianCalendar();

// special time
if (time < MILLSECONDS_OF_HOUR) {
return "";
}

// today
final GregorianCalendar today = new GregorianCalendar(
now.get(GregorianCalendar.YEAR),
now.get(GregorianCalendar.MONTH),
now.get(GregorianCalendar.DAY_OF_MONTH));
final long in24h = time - today.getTimeInMillis();
if (in24h > 0 && in24h <= MILLSECONDS_OF_DAY) {
java.text.DateFormat df = java.text.DateFormat.getTimeInstance(
java.text.DateFormat.SHORT, locale);
return "" + df.format(time);
}

// yesterday
final long in48h = time - today.getTimeInMillis() + MILLSECONDS_OF_DAY;
if (in48h > 0 && in48h <= MILLSECONDS_OF_DAY) {
return simple ? context.getString(R.string.fmt_pre_yesterday)
: context.getString(R.string.fmt_pre_yesterday)
+ " "
+ java.text.DateFormat.getTimeInstance(
java.text.DateFormat.SHORT, locale).format(
time);
}

final GregorianCalendar target = new GregorianCalendar();
target.setTimeInMillis(time);

// same week
if (now.get(GregorianCalendar.YEAR) == target
.get(GregorianCalendar.YEAR)
&& now.get(GregorianCalendar.WEEK_OF_YEAR) == target
.get(GregorianCalendar.WEEK_OF_YEAR)) {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("E", locale);
final String dow = "" + sdf.format(time);
return simple ? dow : dow
+ java.text.DateFormat.getTimeInstance(
java.text.DateFormat.SHORT, locale).format(time);
}

// same year
if (now.get(GregorianCalendar.YEAR) == target
.get(GregorianCalendar.YEAR)) {
return simple ? java.text.DateFormat.getDateInstance(
java.text.DateFormat.SHORT, locale).format(time)
: java.text.DateFormat.getDateTimeInstance(
java.text.DateFormat.SHORT,
java.text.DateFormat.SHORT, locale).format(time);
}

return simple ? java.text.DateFormat.getDateInstance(
java.text.DateFormat.SHORT, locale).format(time)
: java.text.DateFormat.getDateTimeInstance(
java.text.DateFormat.SHORT, java.text.DateFormat.SHORT,
locale).format(time);
}

注意这里用的是java.text.DateFormat,还有另外一个java.text.format.DateFormat,后者不能指定locale。
详细介绍见:http://developer.android.com/reference/java/text/DateFormat.html
分享到:
评论

相关推荐

    Android日期时间格式国际化的实现代码

    总之,Android中的日期时间格式国际化主要是通过`java.text.DateFormat`类及其子类来实现的,结合`Locale`对象,可以轻松地根据用户的语言和地区设置来展示日期和时间。在实际应用中,还可以结合资源文件(strings....

    Android 一键国际化

    需要注意的是,除了文字内容的国际化,应用的布局、图片、日期格式等也需要根据目标语言的文化习惯进行适配。此外,考虑到部分语言的阅读方向(如从右到左的阿拉伯语),可能还需要调整UI布局。 总的来说,"Android...

    Android多语言切换(国际化)

    本教程将详细介绍如何在Android项目中实现多语言切换,让您的应用具备国际化能力。 首先,我们需要了解Android的资源管理机制。Android系统通过res目录下的values文件夹来存储不同类型的资源,如字符串、颜色、布局...

    android国际化

    国际化是指设计和构建软件系统,使其能够适应不同语言、文化、地区和法律的要求,而本地化则是将国际化的产品调整到特定地区的具体过程,包括翻译文本、调整日期和货币格式等。 Android系统为开发者提供了完善的...

    android 日期区间选择控件

    - **国际化**:考虑不同地区对日期格式的需求,如日放在月前还是年后,月份显示英文还是数字等。 - **性能优化**:大量数据加载时,考虑使用懒加载策略,减少初始化时的资源消耗。 - **无障碍功能**:遵循Android的...

    Android 国际化Demo

    在Android应用开发中,国际化的实现是一个重要的环节,它使得应用程序能够支持多种语言,从而吸引全球范围内的用户。本项目“Android国际化Demo”是基于Android Studio构建的一个实例,旨在展示如何实现在Android...

    完整的android 国际化处理包

    ICU在Android中用于处理字符串比较、日期时间格式化、货币转换等任务,确保应用能正确处理各种语言环境。 2. **资源文件**:在Android中,国际化通常通过资源文件实现。这些文件以XML格式存储,以不同的语言代码...

    android国际化工具

    除了基础的字符串国际化,更高级的工具可能还支持处理日期、数字、货币等格式的本地化,以及右到左(RTL)语言的支持。这对于面向全球用户的Android应用来说是必不可少的。 在实际开发中,理解并掌握如何使用这类...

    Android中实现文字、图片资源国际化案例

    在Android应用开发中,为了使应用能够适应全球不同的语言环境,开发者通常会采用资源国际化(i18n,Internationalization)技术。这个过程涉及到将应用中的文本和图片资源分离出来,以便根据不同地区创建对应的翻译...

    android日期时间选择器

    本示例“android日期时间选择器”提供了一种自定义解决方案,以弥补原生Android日期时间控件功能的不足。下面我们将深入探讨这个话题。 首先,Android原生系统提供了两种基本的日期时间选择器:DatePicker和...

    android语言设置国际化

    总的来说,Android语言设置的国际化是通过合理组织和管理资源文件,以及正确处理与语言相关的布局和格式,以达到在全球范围内提供一致且用户友好的用户体验。开发者需要熟悉Android的资源系统,了解不同语言的特性,...

    Android App国际化示例

    它包括了语言和地区的支持,例如支持不同的字符集(如包含重音的字符和特殊符号)、日期时间的格式差异、数字的显示方式、排序规则、货币单位、地址格式、时区、日历系统等。 二、实现Android应用的多语言支持 要让...

    Android 国际化 一键切换语言

    除了文字,还要考虑日期、时间、数字等格式的国际化。使用`java.text.SimpleDateFormat`和`java.util.NumberFormat`等类可以确保这些元素适应用户选择的语言环境。 7. **测试与调试** 在开发过程中,确保在多种...

    Android多语言与国际化

    在Android开发中,多语言与国际化(Internationalization,简称i18n)是提升应用程序全球适应性的重要技术。为了使应用能够支持不同国家和地区的用户,Android提供了强大的资源管理机制,使得开发者可以轻松地实现...

    安卓Android源码——(本地化与国际化).rar

    而本地化(L10N,“Localization”的10个字母)则是将国际化的产品针对特定地区进行定制,包括翻译文本、调整图像、修改日期和数字格式等。 在Android系统中,国际化主要依赖于资源文件的管理。这些资源文件通常...

    Android字符串国际化

    以上内容仅为基础的Android字符串国际化的介绍,实际开发中可能还需要考虑日期、数字、货币等其他类型的国际化问题,以及如何在测试阶段有效地验证不同语言版本的正确性。在实际项目中,开发者应结合具体需求和最佳...

    Android 日期时间组合选择器.zip

    - **国际化支持**:根据系统语言自动调整日期和时间的显示格式。 为了充分利用这个组件,开发者需要熟悉Android的日期和时间处理,以及对话框的使用。在实际应用中,可能还需要结合`SharedPreferences`或其他持久化...

    Android应用源码之(本地化与国际化)-IT计算机-毕业设计.zip

    在Android应用开发中,本地化和国际化是两个重要的概念,它们涉及到如何使应用程序适应不同语言和地区的需求。这个压缩包中的内容很可能是为了帮助学生或开发者理解如何在Android平台上实现这一功能,以创建一个能为...

Global site tag (gtag.js) - Google Analytics