【问题标题】:android/java -example sunrise sunset calc - changing time from 24hr to 12hr formatandroid/java -example 日出日落计算 - 将时间从 24 小时更改为 12 小时格式
【发布时间】:2014-10-10 23:46:23
【问题描述】:

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

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

这是在代码中的什么位置确定的?还是我会查看布局文件属性而不是 javascript?

【问题讨论】:

    标签: java android mobile android-studio


    【解决方案1】:

    它位于 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 小时格式。

    【讨论】:

    • Waitaminute... 此方法返回一个表示经过时间的字符串,而不是一天中的时间。 12 小时格式对于经过的时间没有意义,对吗?
    【解决方案2】:

    乔达时间

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

    LocalTime

    与 Java 捆绑的 java.util.Date 和 .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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-06
      • 2021-08-05
      • 2012-03-20
      • 2018-07-30
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多