2015-05-01 2 views
-2

У меня есть эта строкаЯ хочу, чтобы мои строки в переоборудованный в день

String s = "29/04/2015" 

И я хочу, чтобы произвести название этого дня на моем языке, который является норвежским.

Например:

  • 29/04/2015 является "Onsdag"
  • 30/04/2015 является "Торсдаг"

Как я могу это сделать?

+0

Извините, у меня нет образца кода. – user2891133

+0

Вам нужен локальный формат DateFormat. Это непростая задача. – duffymo

+0

У вас есть пример кода? – user2891133

ответ

2
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 будет иметь день в данном регионе. Обновление

+0

hm. Я обновляю свой ответ –

+2

getDay() из Date устарел с 1,1 https://docs.oracle.com/javase/7/docs/api/java/util/Date.html#getDay%28%29. Необходимо использовать Calendar.get (Calendar.HOUR_OF_DAY). – javajavajava

+0

@Trobbins коммутатор может использоваться для возврата строковой версии дня недели. OP не хотел, чтобы они хотели фактическое имя дня недели. – javajavajava

0

Для начала вам понадобится объект Calendar.

Calendar cal = Calendar.getInstance();  
String s = "29/04/2015" 
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy"); 
cal.setTime(format.parse(s)); 

От Calendar вы можете получить день недели.

int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK); 

день недели будет 1-7 с воскресенья (на английском) является 1

+0

Я только что протестировал это, воскресенье начинается с 1 – dahui

+0

woopsy отредактировано ... – javajavajava

0

Сначала вы должны разобрать String на Date. Затем используйте Calendar, чтобы получить день недели. Вы можете использовать массив, чтобы преобразовать его в соответствующую строку.

// 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]); 
-4

Вы можете использовать карту HashMap, где первый является Список параметров даты «29/4/2015», а второй смысл. Вы можете использовать свою строку, чтобы получить значение map.get (yourString).

+0

Что значит? –

+1

OP просто использовал это как пример и нуждается в решении, чтобы получить день недели, независимо от даты. – javajavajava

+0

Извините, я не понял вопроса – Skizzo

0
final int SUNDAY = 1; 
final int ONSDAG = 2; 
final int TORSDAG = 3; 
.... 
.... 

String s = "29/04/2015"; 
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy"); 
Date date = dateFormat.parse(s); 
Calendar calendar = Calendar.getInstance(); 
calendar.setTime(date); 
int day = calendar.get(Calendar.DAY_OF_WEEK); 

String dayString; 
switch (day) { 
    case(ONSDAG): 
     dayString = "ONSDAG"; 
     break; 
     .... 
} 

EDIT: Я только что проверил это, и это на самом деле начинается с воскресенья, и возвращает значение 1, в воскресенье, я изменил постоянные значения, чтобы отразить это.

0

Вы можете использовать синтаксический анализ даты в сочетании с настройками языка, чтобы получить желаемый результат. Напр. обратитесь к следующему коду.

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); 

Для получения дополнительной информации о местности, посетить Oracle Java Documentation.

0

Вы должен разбор текста с датой до 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.

Смежные вопросы