1

我正在使用 Zk-Calendar 开发类似的 Google-Calendar 我有一个问题关于java.text.SimpleDateFormat这里是一些代码

1)。如何获得dayand monthin first letter uppercase is this possible

这是我到目前为止使用的代码。

private final SimpleDateFormat dformat = new SimpleDateFormat("EEEE dd-MMMMM-yyyy HH:mm:ss a");
private void printDateTester() 
{
    final Locale VENEZUELA_LOCALE = new Locale("es","VE");
    Locale locale = Locale.getDefault();
    System.out.println(locale.getDisplayCountry()+" "+locale.getCountry());//prints United States US
    System.out.println(VENEZUELA_LOCALE.getDisplayCountry()+" "+VENEZUELA_LOCALE.getCountry());//prints Venezuela VE
    final Calendar TODAY_US  = Calendar.getInstance(locale);
    final Calendar TODAY_VEN = Calendar.getInstance(VENEZUELA_LOCALE);
    System.out.println(dformat.format(TODAY_US.getTime())); //prints sábado 10-agosto-2013 11:07:55 AM  
    System.out.println(dformat.format(TODAY_VEN.getTime()));//prints sábado 10-agosto-2013 11:07:55 AM    
}  

它打印出类似的东西,sabado 10-agosto-2013 09:42:24 AM in english something like saturday 10-august-2013但我想要类似Saturday 10-August-2013 09:42:24 AM的东西,这可能吗?

任何想法都非常感谢。

更新

我已经创建了 2 个 SimpleDateFormats 1 使用Locale.US和 2 个其他使用,并且Venezuela Locale版本打印在但两个语言环境都打印,但我需要显示数据,为什么会这样?Spain LocaleUSUppercaseVenezuela and SpainlowercaseSpanish

final Locale VENEZUELA_LOCALE = new Locale("es","VE");
Locale locale = Locale.getDefault();        
final SimpleDateFormat dformatI  = new SimpleDateFormat("EEEE dd-MMMMM-yyyy HH:mm:ss a",VENEZUELA_LOCALE);        
final SimpleDateFormat dformatII = new SimpleDateFormat("EEEE dd-MMMMM-yyyy HH:mm:ss a",Locale.US);        

Locale: Venezuela VE
print: domingo 11-agosto-2013 09:24:25 AM
Locale: United States US
print: Sunday 11-August-2013 09:24:25 AM
4

1 回答 1

1

您是否尝试在 DateTime 格式对象中设置区域设置:

    private final SimpleDateFormat dformat = new SimpleDateFormat("EEEE dd-MMMMM-yyyy HH:mm:ss a",Locale.US);

并非所有语言都遵循美国标准(大写的日期和月份名称)。因此 java DateTimeFormat给出的输出值是预期的。

您可以在以下问题中找到这个有趣的讨论

如何控制 DateFormat 返回的月份和日期名称的大小写?

于 2013-08-10T18:33:00.967 回答