android / java -example日出日落计算 - 改变时间从24小时到12小时格式

时间:2014-10-10 23:46:24

标签: java android mobile android-studio

查看此示例项目的源代码: https://github.com/quakig/sunrisesunsettime/tree/master/SunriseSunsetTime

计算日出/日落时间。看看代码,我看不出他们在12小时或24小时格式中返回时间的确定。在我的手机上运行示例apk,它以24小时格式返回。

代码中的哪个位置确定了?或者我会查看布局文件属性而不是javascript?

2 个答案:

答案 0 :(得分:0)

它位于MainActivity中的transitTime方法:

protected String transitTime(String endtime, String starttime) {
        SimpleDateFormat dt = new SimpleDateFormat("hh:mm");
        Date startTime;
        Date endTime;
        long timdedifferencemillis = 0;
        try {
            startTime = dt.parse(starttime);
            endTime = dt.parse(endtime);
            timdedifferencemillis = endTime.getTime() - startTime.getTime(); // in
                                                                                // milliseconds
        } catch (ParseException e) {
            e.printStackTrace();
        }

        int minutes = Math
                .abs((int) ((timdedifferencemillis / (1000 * 60)) % 60));
        int hours = Math
                .abs((int) ((timdedifferencemillis / (1000 * 60 * 60)) % 24));
        String hm = String.format("%02d h %02d min", hours, minutes);
        return hm;
    }

您必须自己调整才能返回12小时格式。

答案 1 :(得分:0)

约达时间

您可以使用Joda-Time库将时间字符串从24小时格式更改为12小时格式。

LocalTime

与java.util.Date&与Java捆绑的.Calendar类,Joda-Time提供了一个类来表示没有日期或时区的时间。该类称为LocalTime

在Java 8中,新的java.time包(受Joda-Time启发)也有这样的类。但Java 8技术尚未在Android中复制。 Joda-Time适用于Android。

示例代码

LocalTime localTime = LocalTime.parse( "15:43:21" );
DateTimeFormatter formatter = DateTimeFormat.forPattern( "h:m a" ); // Truncate seconds and fractional seconds.
String output = formatter.print( localTime );

转储到控制台。

System.out.println( "output: " + output );  // output: 3:43 PM