Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 用于在任何区域设置中分别显示日期和时间的通用函数_Android_Date_Time_Calendar_Locale - Fatal编程技术网

Android 用于在任何区域设置中分别显示日期和时间的通用函数

Android 用于在任何区域设置中分别显示日期和时间的通用函数,android,date,time,calendar,locale,Android,Date,Time,Calendar,Locale,我有一个问题,我需要在任何地区分别显示日期和时间的通用函数。但是如果不检查calendar.getLocale() 此函数将以美国语言环境给出日期 static public String getDateFromCalendar(Calendar cal) { return String.format("%tD", cal); } 但是如果语言环境是俄语,我必须使用istead this:String.format(“%td.%tm.%tY”,cal); 我不想对所有

我有一个问题,我需要在任何地区分别显示日期和时间的通用函数。但是如果不检查
calendar.getLocale()

此函数将以美国语言环境给出日期

static public String getDateFromCalendar(Calendar cal) {

        return String.format("%tD", cal);
    }
但是如果语言环境是俄语,我必须使用istead this:String.format(“%td.%tm.%tY”,cal); 我不想对所有可能的语言环境使用条件操作。
请帮助找到方法做的更简单。

< P>假设你是java,我建议你考虑类<代码> java。文本。DateFormat < /代码>。背景是每个国家/地区都有自己的典型日期时间格式。例如:

public static String getDateFromCalendar(Calendar cal) {
    // maybe get user-locale via ThreadLocal or via second method parameter
    Locale locale = new Locale("ru", "Ru"); 

    DateFormat dateFormat = 
      DateFormat.getDateInstance(DateFormat.MEDIUM, locale);
    return dateFormat.format(cal.getTime());
}

您可以通过选择“短”、“中”、“长”或“全”来调整格式样式。对于中文本,输出为:
2014年4月5日
将其与
Locale.US的输出进行比较,得出:
2014年4月5日

这是Java语言吗?可以,但dateFormat对象包括日历实例和Locale。我不想把日历信息翻一番。是否可以使用dateFormat.setCalendar(cal)作为初始化对象的示例?或者别的什么。我在DateFormat类中找不到用于输出当前日期或时间的非静态函数。@Monotype
DateFormat
需要两个参数-样式和区域设置。样式由您的用例需求定义,区域设置可以由用户首选项(无论从何处获得)进行评估。然后您的方法
getDateFromCalendar(…)
可以使用给定的示例代码格式化
Calendar
类型的方法参数。我使用的
new gregoriacalendar()
只是一个例子,使用方法参数,如
dateFormat.format(cal.getTime())
-无需加倍。