2013-06-06 13 views
12

O ile wiem, w Javie mogę uzyskać dni powszednie w normalnym (piątek) lub krótkim trybie (piątek). Ale jest jakiś sposób na uzyskanie tylko pierwszej litery?Uzyskaj jednoliterowy skrót dnia tygodnia z datą w java

Pomyślałem, że mogę uzyskać pierwszą literę za pomocą "substring", ale nie będzie ona poprawna dla wszystkich języków. Na przykład hiszpańskie dni powszednie to: Lunes, Martes, Miércoles, Jueves, Viernes, Sábado i Domingo, a pierwsza litera "Miércoles" to X zamiast M, aby odróżnić ją od "Martes".

+1

Hmm, francuski i włoski mają te same problemy, ale nigdy nie widziałem skrótów jednoliterowych używanych w żadnym z tych dwóch języków. Heck, nawet _angielski_ ma ten problem. – fge

Odpowiedz

7

W Androidzie można użyć SimpleDateFormat z „eeeee”. w następnym przykładzie można go zobaczyć.

SimpleDateFormat formatLetterDay = new SimpleDateFormat("EEEEE",Locale.getDefault()); 
String letter = formatLetterDay.format(new Date()); 
+0

, który jest lepszy niż poprawna odpowiedź –

+3

To nie działa na API 16, zwraca pełną nazwę dnia. W API 18 i powyżej wydaje się działać dobrze. –

+4

Dla API 16 lub starszych, 'DateUtils.getDayOfWeekString (dayOfWeek, DateUtils.LENGTH_SHORTEST)' –

3

Nie ma standardowej obsługi Java API w tym zakresie.

Po części dlatego, że wiele (może nawet większość) języków nie ma konwencjonalnych, jednoliterowych skrótów w dni powszednie. W języku angielskim nie ma na przykład (M T W T F S S).

A (hipotetyczna) opcja formatowania, która nie działa w wielu/większości lokalizacji stanowiłaby przeszkodę w internacjonalizacji, a nie pomoc.


1 - Mam na myśli to w sensie ludzkim. Można wymyślić konwencję, ale ludzie nie zrozumieliby, co oznaczają skróty.

0

Myślę, że nie ma bezpośredniej funkcji java, aby uzyskać pierwszą literę i nie ma standardowego sposobu, aby to zrobić.

Można odwołać się do tego linku, aby uzyskać pierwszą literę dnia strun przy użyciu podciąg() metoda java

Given a string in Java, just take the first X letters

+0

Nie wiem, czy uzyskanie pierwszej litery będzie poprawne dla wszystkich lanugage, ponieważ problem opisany. –

+0

Domyślam się, że możesz zrobić własne mapowanie na podstawie języka, tj. Miércoles "jest X, zamiast X wyświetla M. Ale nie będzie to możliwe, jeśli chcesz obsługiwać dużą liczbę języków.To –

+0

Chcę obsługiwać wszystkie języki :) –

1

Zdaję sobie sprawę OP prosi o standardach w różnych językach, a to nie rozwiązuje to. Ale istnieje/był standard używania skrótu Day of Week z pojedynczym znakiem.

Powrót do mainframe dni, przy użyciu jednoliterowego skrótu na dzień tygodnia był wspólny, albo do przechowywania dnia tygodnia w 1 polu znakowym (aby zaoszczędzić cenne miejsce), lub mieć nagłówek raportu dla pojedynczego znaku kolumny. "Standardem" było użycie MTWRFSU, gdzie R było na czwartek, a U na niedzielę.

nie mogłem znaleźć żadnych ostatecznych odniesień do tego (co jest dlaczego zacytowałem „standard”, ale oto kilka przykładów: http://eventguide.com/topics/one_digit_day_abbreviations.html http://www.registrar.ucla.edu/soc/definitions.htm#Anchor-Days-3800

6

Jak wspomniano powyżej, nie ma standardowego wsparcie Java dla tego produktu. Korzystanie z ciągu znaków formatowania „eeeee”, jednak nie jest gwarantowane do pracy na wszystkich urządzeniach z systemem Android. Poniższy kod jest gwarantowane działanie na każdym urządzeniu:

public String firstLetterOfDayOfTheWeek(Date date) { 

    Locale locale = Locale.getDefault(); 
    DateFormat weekdayNameFormat = new SimpleDateFormat("EEE", locale); 
    String weekday = weekdayNameFormat.format(date); 
    return weekday.charAt(0)+""; 
} 
Powiązane problemy