Tamamlanmamış tarihi yalnızca ayın kesinliğine göre biçimlendirmem gerekiyor. İlk tahminim ona "MMMM yyyy" desen uygulamaktı. Bu, birçok yerel (İngilizce, Almanca, ...) için iyi çalışır, ancak fleksiyona sahip diller için çirkin bir sonuç verir, ör. Rusça. documentation of SimpleDateFormat
'u okudum ve 'L' 'ye bağlam-duyarsız ay adı vermesi gerektiğini öğrendim: sadece desene ihtiyacım var, çünkü desende ayın günü yok. Bu yüzden "LLLL yyyy" desenini denedim. Rusça ve diğer fleksiyon dilleri için mükemmel çalışır, ancak bunun yerine, örn. Düzgün 'tr' ve 'de' iş:Java tarih biçiminde ay adının bağımsız formu
import java.text.*;
import java.util.*;
public class test
{
public static void main (String[] arguments) throws Exception
{
for (String locale : new String[] { "en", "de", "hu", "it", "ru", "fi", "pl" })
System.out.format ("%s: %s \t%s\n", locale,
new SimpleDateFormat ("MMMM yyyy", new Locale (locale)).format (new Date()),
new SimpleDateFormat ("LLLL yyyy", new Locale (locale)).format (new Date()));
}
}
Ve çıkış: Test edilen yerler için Yani
en: September 2015 0009 2015
de: September 2015 0009 2015
hu: szeptember 2015 szeptember 2015
it: settembre 2015 Settembre 2015
ru: сентября 2015 Сентябрь 2015
fi: syyskuuta 2015 syyskuu 2015
pl: września 2015 wrzesień 2015
, İngilizce ve Almanca ... İşte
Test kodudur sadece 'M' ile, 'hu' hem 'M' hem de 'L' ile iyidir, 'bu' muhtemelen 'L' ile daha iyi durumdadır (burada büyük harfin ne kadar olduğunu bilmiyorum), 'ru' ise, 'fi' ve 'pl' sadece 'L' ile doğru çıktı verir (bu sadece Rusça ve Lehçe için gerçekten söyleyebilirim, fakat Fin dilinde benzer olduğunu varsayalım).Sorular: Tüm yerel ayarlar için düzgün
- Ben
SimpleDateFormat
yapmak için bir şey yapabilir miyimveya benzer tarih biçimlendirme sınıf muamele 'L'? Alternatif olarak, herhangi bir yerel ayar için 'M' veya 'L' kullanılmasının gerekli olup olmadığını anlamanın basit bir yolu var mıdır?
Rusça bilmiyorum ama M 'tanımlayıcısının yanlış bir ay ismi verdiğini mi söylüyorsunuz? 'Сентября' ve 'Сентябрь' arasındaki anlamdaki fark nedir? – Tunaki
Fince ile aynı. Ayın adı syyskuu. Ancak, bahsedilen bir gün varsa, şu şekilde olmalıdır: 15. syyskuuta (bu, bağımsız biçime karşı bağlama duyarlılık anlamındadır). –
Java 8'in hangi sürümünü kullanıyorsunuz? “L” sadece Java 8'de tanıtıldı ve makinemde programınız “en” ve “de” için “Eylül” üretiyor. Belki güncel olmayan yerel dosyalara sahip bir sürümünüz var mı? – RealSkeptic