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

吃了不消化

吃了不消化

2016-02-19 10:01

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的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();

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

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

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
Android日期时间格式国际化的实现代码

JSP 国际化-格式化货币和日期

Web开发
JSP 国际化-格式化货币和日期

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

java时间戳转日期格式的实现代码

编程语言 网络编程
java时间戳转日期格式的实现代码

利用 gettext 来实现 PHP 的国际化编程

Web开发
利用 gettext 来实现 PHP 的国际化编程

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

美化你的代码 vb(VBS)代码格式化的实现代码

编程语言 网络编程
美化你的代码 vb(VBS)代码格式化的实现代码

android panellistview 圆角实现代码

编程语言 网络编程
android panellistview 圆角实现代码

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

SQLSERVER2005 中树形数据的递归查询

SQLSERVER2005 中树形数据的递归查询

kb3081438更新失败怎么办

kb3081438更新失败怎么办
下拉加载更多内容 ↓