java/android-SimpleDataFormat-对于hh:mm-如果0分钟,则删除分钟数

java/android-SimpleDataFormat-对于hh:mm-如果0分钟,则删除分钟数,java,Java,如何使用SimpleDataFormat删除小时开始时的:00 5:00 PM ----> 5 PM 5:30 PM ----> 5:30 PM 我试过hh:mm,h:mm,h:m等等。如果我理解你的问题,我想有一种方法可以这样打印出来:太平洋夏令时下午5点但你需要实现这一行“hh'o'clock'a,zzzzz”而不是hh:mm等。如果这解决了您的问题,或者我误解了您的问题,请告诉我 这里有一个简单的格式方法,它使用适当的SimpleDataFormat实例——这取决于输入的日期

如何使用SimpleDataFormat删除小时开始时的:00

5:00 PM ----> 5 PM
5:30 PM ----> 5:30 PM

我试过
hh:mm
h:mm
h:m
等等。

如果我理解你的问题,我想有一种方法可以这样打印出来:太平洋夏令时下午5点但你需要实现这一行“hh'o'clock'a,zzzzz”而不是hh:mm等。如果这解决了您的问题,或者我误解了您的问题,请告诉我

这里有一个简单的
格式
方法,它使用适当的
SimpleDataFormat
实例——这取决于输入的
日期
是否位于一小时的顶端(四舍五入到最近的分钟后)


SimpleTimeFormat.parse将返回日期。虽然Date.getMinute()已不推荐使用,但不建议使用,因此可以通过另一种方法将日期设置为日历,并使用从日历获取的分钟数进行检查。 解析时间时,最好抛出ParseException。 希望这能有所帮助

public static String changeTimeFormat(String timeString) throws ParseException {
            SimpleDateFormat sf = new SimpleDateFormat("hh:mm a");
            Date date = null;
            date = sf.parse(timeString);
            if(date != null) {
                Calendar calendar = Calendar.getInstance();
                calendar.clear();
                calendar.setTime(date);
                return (calendar.get(Calendar.MINUTE) == 0)?
                        new SimpleDateFormat("h a").format(date) : timeString;
            }
            return null;
        }

你能说得更具体些吗?您只想使用一个操作,还是可以允许使用解析器?与LocalTime.parse()类似,您需要根据date对象中的值来决定使用哪种格式设置程序您确定该设置适用于闰秒等吗。。。。?自1970-01-01以来,你可能更喜欢看小时的分钟数,而不是秒数。
Date\getMinutes
有什么问题吗?似乎这是一个更可靠的指标。如果有0分钟,可能还有59秒。我已将我的答案更新为四舍五入到最接近的分钟(使用
getMinutes
getSeconds
),以决定使用哪个
SimpleDateFormat
)。
static String format(Date d) {
    final Calendar c = Calendar.getInstance();
    c.setTime(d);
    final int mins = c.get(Calendar.MINUTE);
    final int secs = c.get(Calendar.SECOND);
    return ((mins == 0 && secs < 30 || mins == 59 && secs >= 30) ? FH : F).format(d);
}
public static String changeTimeFormat(String timeString) throws ParseException {
            SimpleDateFormat sf = new SimpleDateFormat("hh:mm a");
            Date date = null;
            date = sf.parse(timeString);
            if(date != null) {
                Calendar calendar = Calendar.getInstance();
                calendar.clear();
                calendar.setTime(date);
                return (calendar.get(Calendar.MINUTE) == 0)?
                        new SimpleDateFormat("h a").format(date) : timeString;
            }
            return null;
        }