如何在Java ME中格式化日期?

adi*_*dit 1 java java-me

所以我有一个Date对象,我想创建一个方法,以便它以下列格式打印Date:

11 September 2011, 9:15pm
Run Code Online (Sandbox Code Playgroud)

我怎么做?到目前为止,我只是对日期做了一个toString,它给了我所有GMT信息和我不需要的秒精度.我是否必须使用DateFormatter或者有更简单的方法吗?

编辑后,在标题中包含Java ME,并在发布了原始问题的一些正确答案之后的标签.

Yas*_*muş 8

您可以使用SimpleDateFormat课程来设置日期格式. http://download.oracle.com/javase/1,5.0/docs/api/java/text/SimpleDateFormat.html

我猜模式会是这样的:

SimpleDateFormat format = new SimpleDateFormat("dd MMMM yyyy, h:ma");
format.format(yourDate);
Run Code Online (Sandbox Code Playgroud)

编辑Java ME; 我读到Java ME规范中没有SimpleDateFormat类.所以我会尝试日历;

首先将您的日期添加到日历中,然后获得所需的一切.更好的是使这个方法

Calendar calendar = Calendar.getInstance();
Date myDate = new Date(); // as an example, date of "now"
calendar.setTime(myDate);

int day = calendar.get(Calendar.DAY_OF_MONTH);
int monthNumber = calendar.get(Calendar.MONTH);

String[] _months = new DateFormatSymbols().getMonths();
String[] months = new String[12];
for(int i =0; i < 12; i++){
    months[i] = _months[i];
}
//because there is something wrong, we have a 12. month in the name of "" (nothing)

//or if there is no DateFormatSymbols class in your plans
//you may write for yourself;
/*
String[] monthNames = {"January", "February",
            "March", "April", "May", "June", "July",
            "August", "September", "October", "November",
            "December"};
*/
String month = months[monthNumber]; //or String month = monthNames[monthNumber];

int year = calendar.get(Calendar.YEAR);

int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
String amPm = calendar.get(Calendar.AM_PM)==1 ? "am" : "pm";
System.out.println(day + " " + month + " " + 
    year + ", " + hour + ":" + minute + amPm);
Run Code Online (Sandbox Code Playgroud)