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

 更新时间:2013年05月10日 10:35:25   作者:  
本篇文章是对在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控件ImageSwitcher实现左右图片切换功能

    Android控件ImageSwitcher实现左右图片切换功能

    这篇文章主要为大家详细介绍了Android控件ImageSwitcher实现左右图片切换功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • Kotlin如何使用类似C#的yield功能详解

    Kotlin如何使用类似C#的yield功能详解

    在语句中使用 yield 关键字,则指示在的方案、运算符或 get 访问器是迭代器。下面这篇文章主要给大家介绍了关于Kotlin如何使用类似C#的yield功能的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧
    2018-06-06
  • android教程之hockeyapp捕获异常示例

    android教程之hockeyapp捕获异常示例

    这篇文章主要介绍了android中hockeyapp捕获异常的示例,需要的朋友可以参考下
    2014-02-02
  • 关于Android Fragment对回退栈的详细理解

    关于Android Fragment对回退栈的详细理解

    这篇文章主要介绍了Android  Fragment的回退栈示例详细介绍的相关资料,在Android中Fragment回退栈是由Activity管理的,每个Activity都有自己的回退栈,其中保存了已经停止(处于后台)的Fragment实例,需要的朋友可以参考下
    2016-12-12
  • Android UI设计之AlertDialog弹窗控件

    Android UI设计之AlertDialog弹窗控件

    这篇文章主要为大家详细介绍了Android UI设计之AlertDialog弹窗控件的使用方法,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • 小谈Kotlin的空处理的使用

    小谈Kotlin的空处理的使用

    这篇文章主要介绍了小谈Kotlin的空处理的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Android开发之5.0activity跳转时共享元素的使用方法

    Android开发之5.0activity跳转时共享元素的使用方法

    下面小编就为大家分享一篇Android开发之5.0activity跳转时共享元素的使用方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • Android实现颜色选取圆盘

    Android实现颜色选取圆盘

    这篇文章主要为大家详细介绍了Android实现颜色选取圆盘,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Android实现笑脸进度加载动画

    Android实现笑脸进度加载动画

    这篇文章主要介绍了Android实现笑脸进度加载动画的方法,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下
    2021-05-05
  • Android WebView的使用方法总结

    Android WebView的使用方法总结

    这篇文章主要介绍了 Android WebView的使用方法总结的相关资料,功能有指定网页打开,跳转网页,传值等,需要的朋友可以参考下
    2017-07-07

最新评论