gpt4 book ai didi

java - 根据用户的语言环境和偏好格式化日期和时间

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:49:42 25 4
gpt4 key购买 nike

我试图根据用户的设置获取格式化的日期(年、月、日)和时间(小时、分钟、秒)字符串。 This Android Developers Google Group 中的帖子描述了我遇到的确切问题,但没有人帮助那个人解决它。我总结一下:

Android 有这些尝试执行上述操作的类,但没有一个类同时使用用户首选项和显示秒数。

  1. java.text.DateFormat
    不使用在“设置”应用中设置的首选项

  2. android.text.format.DateFormat
    获取一个 java.text.DateFormat 对象,该对象使用 getDateFormat()getTimeFormat() 正确格式化输出,但 getTimeFormat() 不包括秒数。

  3. android.text.format.DateUtils
    不使用在“设置”应用中显示日期的偏好设置,也无法显示秒数。

例如,将设置中的首选项设置为 DD/MM/YYYY 和 24 小时格式 = on,运行以下代码:

long timestamp=System.currentTimeMillis();

sometextview.setText(
java.text.format.DateFormat.getDateTimeInstance().format(new Date(timestamp))

+"\n"+

android.text.format.DateFormat.getDateFormat(this).format(new Date(timestamp))
+" "+
android.text.format.DateFormat.getTimeFormat(this).format(new Date(timestamp))

+"\n"+

android.text.format.DateUtils.formatDateTime(this,
timestamp,
DateUtils.FORMAT_SHOW_DATE|
DateUtils.FORMAT_SHOW_TIME|
DateUtils.FORMAT_SHOW_YEAR)
);

在 TextView 中给我以下输出:

Apr 27,2014 5:47:18 PM
27/04/2014 17:47
April 27,2014, 17:47

None 给出了所需的输出,使用上述首选项会是这样的:

27/04/2014 17:47:18 

我调查了 joda-time-android图书馆也是如此,但它似乎没有做我需要的事情(如果我错了请纠正我)。

TL;DR:如何在 Android 上根据用户偏好用秒格式化日期/时间?

最佳答案

使用@I wish I could think a good的建议,我编写了以下代码,使用语言环境和用户设置格式化日期:

public static String timeDateStringFromTimestamp(Context applicationContext,long timestamp){
String timeDate;
String androidDateTime=android.text.format.DateFormat.getDateFormat(applicationContext).format(new Date(timestamp))+" "+
android.text.format.DateFormat.getTimeFormat(applicationContext).format(new Date(timestamp));
String javaDateTime = DateFormat.getDateTimeInstance().format(new Date(timestamp));
String AmPm="";
if(!Character.isDigit(androidDateTime.charAt(androidDateTime.length()-1))) {
if(androidDateTime.contains(new SimpleDateFormat().getDateFormatSymbols().getAmPmStrings()[Calendar.AM])){
AmPm=" "+new SimpleDateFormat().getDateFormatSymbols().getAmPmStrings()[Calendar.AM];
}else{
AmPm=" "+new SimpleDateFormat().getDateFormatSymbols().getAmPmStrings()[Calendar.PM];
}
androidDateTime=androidDateTime.replace(AmPm, "");
}
if(!Character.isDigit(javaDateTime.charAt(javaDateTime.length()-1))){
javaDateTime=javaDateTime.replace(" "+new SimpleDateFormat().getDateFormatSymbols().getAmPmStrings()[Calendar.AM], "");
javaDateTime=javaDateTime.replace(" "+new SimpleDateFormat().getDateFormatSymbols().getAmPmStrings()[Calendar.PM], "");
}
javaDateTime=javaDateTime.substring(javaDateTime.length()-3);
timeDate=androidDateTime.concat(javaDateTime);
return timeDate.concat(AmPm);
}

关于java - 根据用户的语言环境和偏好格式化日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23331416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com