Java 我希望我的字符串转换为一天
我有这根绳子Java 我希望我的字符串转换为一天,java,locale,Java,Locale,我有这根绳子 String s = "29/04/2015" 我希望它能用我的语言,也就是挪威语,写出那天的名字 例如: 2015年4月29日是“Onsdag” 2015年4月30日是“托斯达克” 我该怎么做 String dateString = "29/04/2015"; DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy"); Date date = dateFormat.parse(dateString); Simple
String s = "29/04/2015"
我希望它能用我的语言,也就是挪威语,写出那天的名字
例如:
是“Onsdag”2015年4月29日
是“托斯达克”2015年4月30日
String dateString = "29/04/2015";
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
Date date = dateFormat.parse(dateString);
SimpleDateFormat formatter = new SimpleDateFormat("E", Locale.no_NO);
String day = formatter.format(date);
现在,
day
将在给定的区域设置中指定日期。更新首先,您需要一个日历
对象
Calendar cal = Calendar.getInstance();
String s = "29/04/2015"
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
cal.setTime(format.parse(s));
从日历中
可以获得一周中的哪一天
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
dayOfWeek将为1-7,Sunday(英语)为1您需要根据您的区域设置配置DateFormat的实例(请查看)
然后解析日期并获得日期,正如Dilip已经建议的那样。首先,您需要将
字符串
解析为日期。然后使用日历
获取一周中的日期。可以使用数组将其转换为适当的字符串
// Array of Days
final String[] DAYS = {
"søndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag"
};
// Parse the date
final String source = "27/04/2015";
final DateFormat format = new SimpleDateFormat("dd/MM/yyyy");
Date date = new Date();
try {
date = format.parse(source);
} catch (final ParseException e) {
e.printStackTrace();
}
// Convert to calendar
final Calendar c = Calendar.getInstance();
c.setTime(date);
final int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
// Get the day's name
System.out.println("Day of Week: " + dayOfWeek);
System.out.println("Day = " + DAYS[dayOfWeek - 1]);
您可以使用HashMap映射,其中第一个参数是日期“29/4/2015”,第二个是含义。您可以使用字符串来获取含义映射。get(您的字符串)
编辑:我刚刚测试了它,它实际上从星期天开始,并返回星期天的值1,我更改了常量值以反映这一点。您可以使用日期解析结合区域设置来获得所需的输出。例如,参考以下代码
String dateStr = "29/04/2015";
SimpleDateFormat dtf = new SimpleDateFormat("dd/MM/yyyy");
Date dt = dtf.parse(dateStr);
Calendar cal = Calendar.getInstance();
cal.setTime(dt);
String m = cal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG_FORMAT, new Locale("no", "NO"));
System.out.println(m);
有关区域设置的详细信息,请访问。您需要使用date todate
实例解析文本,然后将其格式化回文本。您可以使用支持多种日期模式的SimpleDateFormat
类来完成此操作,如
dd/MM/yyyy
为您的原始日期
- 和
EEEE
表示月份中日期的全名
格式化时,还需要指定要使用的区域设置。例如,要创建特定于挪威的语言环境,可以使用
Locale nor = Locale.forLanguageTag("no-NO");
因此,您的代码看起来或多或少像:
String text = "29/04/2015";
Locale nor = Locale.forLanguageTag("no-NO");
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy", nor);
SimpleDateFormat dayOfWeek = new SimpleDateFormat("EEEE", nor);
Date date = sdf.parse(text);
System.out.println(dayOfWeek.format(date));
输出:onsdag
对不起,我没有示例代码。您需要特定于区域设置的日期格式。这是一个简单的问题。你有一个代码示例吗?如果你没有示例代码,至少告诉我们到目前为止你都尝试了什么。不要指望这里有人会为你写所有的代码。我们很乐意提供帮助,但首先告诉我们,您在发布之前确实尝试过一些东西。请尝试特定于区域设置的日期格式-hm。。从日期开始更新我的answergetDay()自1.1以来已被弃用。需要使用Calendar.get(Calendar.HOUR\u OF_DAY)。@Trobbins可以使用开关返回星期几的字符串版本。OP不需要整数,他们需要一周中某一天的实际名称。@Barbiepillon用SimpleDataFormat
更新了我的答案,现在不需要开关箱。我不知道为什么,但是,Locale.no\u no
不适合我。OP只是以它为例,需要一个解决方案来获取一周中的哪一天,而不管日期。很抱歉,我不理解我刚才测试的问题,星期天从1开始
String text = "29/04/2015";
Locale nor = Locale.forLanguageTag("no-NO");
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy", nor);
SimpleDateFormat dayOfWeek = new SimpleDateFormat("EEEE", nor);
Date date = sdf.parse(text);
System.out.println(dayOfWeek.format(date));