Calendar 我无法在Java 8 Micro Edition中设置AM_PM变量

Calendar 我无法在Java 8 Micro Edition中设置AM_PM变量,calendar,java-me,Calendar,Java Me,我是一个自学Java的新手。作为一个更大项目的一部分,我正在运行代码来确定日历对象上的时间,然后在以后设置。我在互联网上搜索了一种设置AM_PM值的方法,但我无法让它工作。任何建议都会有帮助 package timethread; import javax.microedition.midlet.MIDlet; import java.util.Calendar; /** * * @author Jaydawg */ public class TimeThread extends MIDle

我是一个自学Java的新手。作为一个更大项目的一部分,我正在运行代码来确定日历对象上的时间,然后在以后设置。我在互联网上搜索了一种设置AM_PM值的方法,但我无法让它工作。任何建议都会有帮助

package timethread;

import javax.microedition.midlet.MIDlet;
import java.util.Calendar;

/**
*
* @author Jaydawg
*/
public class TimeThread extends MIDlet {

@Override
public void startApp() {
    Calendar cal = Calendar.getInstance();
    System.out.println(cal.get(Calendar.AM_PM)); // Original value: it is '1' or PM
    cal.add(Calendar.AM_PM, 0); // Attempt #1
    System.out.println(cal.get(Calendar.AM_PM));

    cal.set(Calendar.AM_PM, 0); // Attempt #2
    System.out.println(cal.get(Calendar.AM_PM));

    cal.set(Calendar.AM_PM, Calendar.AM); //Attempt #3
    System.out.println(cal.get(Calendar.AM_PM));

    cal.add(Calendar.AM_PM, Calendar.AM); //Attempt #4
    System.out.println(cal.get(Calendar.AM_PM));

    int min = cal.get(Calendar.MINUTE);
    int sec = cal.get(Calendar.SECOND);
    int hour = cal.get(Calendar.HOUR);
    int AMPM = cal.get(Calendar.AM_PM);
    System.out.println(AMPM);
    String AMPMString = "AM";
    if(cal.get(Calendar.AM_PM)==1){
        AMPMString = "PM";
    }
    System.out.println("The time is " + hour + ":" + min + ":" + sec + " " + AMPMString);
}
我的结果如下:

1
1
1
1
1
1
The time is 1:20:42 PM

可能是Java 8 Micro Edition中的日历有问题

这对我来说适用于Java 7:

Calendar c = Calendar.getInstance();
c.set(Calendar.AM_PM, Calendar.AM);
System.out.println(c.get(Calendar.AM_PM));
c.set(Calendar.AM_PM, Calendar.PM);
System.out.println(c.get(Calendar.AM_PM));
它输出:

0
1

Oracle确认这是一个bug


@jaydawg您可以尝试其他Calendar.set()方法,也可以尝试使用Calendar.add()12小时或-12小时。你想要实现的目标并不直观,因此我不确定什么是适合你需要的最佳解决方案。