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"
我希望它能用我的语言,也就是挪威语,写出那天的名字

例如:

  • 2015年4月29日
    是“Onsdag”
  • 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 to
date
实例解析文本,然后将其格式化回文本。您可以使用支持多种日期模式的
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));