高分求助:Android多语言【时间】的问题

J2EE程序员 2013-11-06 04:20:44

有没有做过多语言环境的哥们,求助!


String pattern = "yyyy-MM-dd HH:mm:ss";


现在我在中文环境下,SimpleDateFormat的构造函数传入的参数 pattern是有效的。

但是语言切换到英文下,则提示 参数 pattern Invaild.

Log如下:

11-06 16:19:22.339: E/AndroidRuntime(2476): FATAL EXCEPTION: main
11-06 16:19:22.339: E/AndroidRuntime(2476): java.lang.ExceptionInInitializerError
11-06 16:19:22.339: E/AndroidRuntime(2476): at com.medzone.mcloud.bean.helper.RoleInfoHelper.getDefaultAvatar(RoleInfoHelper.java:51)
11-06 16:19:22.339: E/AndroidRuntime(2476): at com.medzone.mcloud.ui.MainPage.fillView(MainPage.java:148)
11-06 16:19:22.339: E/AndroidRuntime(2476): at com.medzone.mcloud.ui.MainPage.initUI(MainPage.java:69)
11-06 16:19:22.339: E/AndroidRuntime(2476): at com.medzone.mcloud.ui.MainPage.onCreate(MainPage.java:51)
11-06 16:19:22.339: E/AndroidRuntime(2476): at android.app.Activity.performCreate(Activity.java:4471)
11-06 16:19:22.339: E/AndroidRuntime(2476): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
11-06 16:19:22.339: E/AndroidRuntime(2476): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1933)
11-06 16:19:22.339: E/AndroidRuntime(2476): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1994)
11-06 16:19:22.339: E/AndroidRuntime(2476): at android.app.ActivityThread.access$600(ActivityThread.java:126)
11-06 16:19:22.339: E/AndroidRuntime(2476): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1150)
11-06 16:19:22.339: E/AndroidRuntime(2476): at android.os.Handler.dispatchMessage(Handler.java:99)
11-06 16:19:22.339: E/AndroidRuntime(2476): at android.os.Looper.loop(Looper.java:137)
11-06 16:19:22.339: E/AndroidRuntime(2476): at android.app.ActivityThread.main(ActivityThread.java:4439)
11-06 16:19:22.339: E/AndroidRuntime(2476): at java.lang.reflect.Method.invokeNative(Native Method)
11-06 16:19:22.339: E/AndroidRuntime(2476): at java.lang.reflect.Method.invoke(Method.java:511)
11-06 16:19:22.339: E/AndroidRuntime(2476): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
11-06 16:19:22.339: E/AndroidRuntime(2476): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
11-06 16:19:22.339: E/AndroidRuntime(2476): at dalvik.system.NativeStart.main(Native Method)
11-06 16:19:22.339: E/AndroidRuntime(2476): Caused by: java.lang.IllegalArgumentException: Unknown pattern character 'o'
11-06 16:19:22.339: E/AndroidRuntime(2476): at java.text.SimpleDateFormat.validateFormat(SimpleDateFormat.java:268)
11-06 16:19:22.339: E/AndroidRuntime(2476): at java.text.SimpleDateFormat.validatePattern(SimpleDateFormat.java:309)
11-06 16:19:22.339: E/AndroidRuntime(2476): at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:369)
11-06 16:19:22.339: E/AndroidRuntime(2476): at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:253)
11-06 16:19:22.339: E/AndroidRuntime(2476): at com.medzone.mcloud.util.TimeUtil.<clinit>(TimeUtil.java:52)
11-06 16:19:22.339: E/AndroidRuntime(2476): ... 18 more



我搜了一下,这方面中文资料很少,英文。。。你懂的。。。求助一下!
...全文
191 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
J2EE程序员 2013-11-21
  • 打赏
  • 举报
回复
引用 3 楼 tantahe 的回复:
new SimpleDateFormat(pattern, Locale.ENGLISH);试试这种方式
引用 4 楼 l417584711 的回复:
TimeUtil.java:52 这行代码是啥
先谢谢哥们的回复,问题我找到了; 我先贴出一段有问题的代码,以防别人也搜到这个帖子,然后无解~哎

@SuppressLint("SimpleDateFormat")
public class TimeUtil {
	private static Context context = GlobalVars.applicationContext;
	private static final String TODAY = context.getResources().getString(
			R.string.today);
	private static final String YESTERDAY = context.getResources().getString(
			R.string.yesterday);
	private static final String HOURSAGO = context.getResources().getString(
			R.string.hoursAgo);
	private static final String MINUTESAGO = context.getResources().getString(
			R.string.minutesAgo);
	private static final String DAYSAGO = context.getResources().getString(
			R.string.daysAgo);
	private static final String JUSTNOW = context.getResources().getString(
			R.string.justNow);
	private static final String YEAR = context.getResources().getString(
			R.string.year);
	private static final String MONTH = context.getResources().getString(
			R.string.month);
	private static final String DAY = context.getResources().getString(
			R.string.day);
	private static final SimpleDateFormat dateTimeFormat = new SimpleDateFormat(
			"yyyy-MM-dd HH:mm");
	private static final SimpleDateFormat dateFormatAccurateToSecond = new SimpleDateFormat(
			"yyyy-MM-dd HH:mm:ss", Locale.getDefault());
	private static final SimpleDateFormat dateFormat = new SimpleDateFormat(
			"yyyy-MM-dd");
	private static final SimpleDateFormat timeFormat1 = new SimpleDateFormat(
			"HH:mm");

	private static final SimpleDateFormat timeFormat2 = new SimpleDateFormat(
			"HH:mm:ss");

	private static final SimpleDateFormat timeFormat3 = new SimpleDateFormat(
			"yyyy");

	private static final SimpleDateFormat timeFormatFriendly = new SimpleDateFormat(
			"MM" + MONTH + "dd" + DAY + " HH:mm");
问题就是最后一句:

	private static final SimpleDateFormat timeFormatFriendly = new SimpleDateFormat(
			"MM" + MONTH + "dd" + DAY + " HH:mm");
不支持有 中文解析格式;因为英文是通用的,但是在不同的时区,可以有自己不同的时间格式; 比如这里的中文,在中文zn环境下,一点事儿没有; 但是环燥了en或者其他环境下,那就直接force close了; 悲催;
aSysBang 2013-11-06
  • 打赏
  • 举报
回复
TimeUtil.java:52 这行代码是啥
tantahe 2013-11-06
  • 打赏
  • 举报
回复
new SimpleDateFormat(pattern, Locale.ENGLISH);试试这种方式
J2EE程序员 2013-11-06
  • 打赏
  • 举报
回复
引用 1 楼 l417584711 的回复:
Caused by: java.lang.IllegalArgumentException: Unknown pattern character 'o' 仔细检查字符串 里面有“o”
先谢谢你的回复,实际上你也看到了Pattern中并没有'o'
aSysBang 2013-11-06
  • 打赏
  • 举报
回复
Caused by: java.lang.IllegalArgumentException: Unknown pattern character 'o' 仔细检查字符串 里面有“o”

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧