关闭

Date和String.format常见用法

标签: java
178人阅读 评论(0) 收藏 举报
分类:

目前的java版本中,Date类主要通过SimpleDateFormat和Calendar类进行处理,Date类内部的很多方法都被弃用。SimpleDateFormat可以按照一定的格式对Date和String进行转换,而Calendar类则是根据国际化标准来构造Date实例。

举例两个常见用法:
计算两个日期的天数,输入为两个时间的字符串,如“20151117”

/**
* 计算两个日期间的天数
*/
public static long getDayNum(String start, String end) {
    // 格式标准:yyyyMMdd
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
    //通过Calendar.getInstance()方法来构造Calendar实例
    Calendar calendar = Calendar.getInstance(Locale.CHINA);
    try {
        Date date1 = sdf.parse(start);
        calendar.setTime(date1);
        int day1 = calendar.get(Calendar.DAY_OF_YEAR);
        Date date2 = sdf.parse(end);
        calendar.setTime(date2);
        int day2 = calendar.get(Calendar.DAY_OF_YEAR);
        if(day2 < day1)
            retrun day1 - day2 + 1;
        else
            return day2 - day1 + 1;
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return 0;
}

计算两个时间段间的分秒数,这回的输入为两个时间的时间戳。

/**
* 计算两个时间的分秒数
*/
public static String getTimeLength(String start, String end) {
   Calendar calendar = Calendar.getInstance(Locale.CHINA);
   try {
    //传入时间戳,得到对应的时间
       calendar.setTimeInMillis(Long.parseLong(start));
       int min1 = calendar.get(Calendar.MINUTE);
       int sec1 = calendar.get(Calendar.SECOND);
       calendar.setTimeInMillis(Long.parseLong(end));
       int min2 = calendar.get(Calendar.MINUTE);
       int sec2 = calendar.get(Calendar.SECOND);
       int secRes, minRes;
       if (sec2 - sec1 < 0) {
           sec2 += 60;
           min2--;
       }
       secRes = sec2 - sec1;
       if ((minRes = min2 - min1) < 0) {
           return "00:00";
       }
       return String.format("%02d", minRes) + ":" + String.format("%02d", secRes);
   } catch (Exception e) {
       Log.e("lzq", "getTimeLength found error!", e);
   }
   return "00:00";
}

上述代码用到了String.format()方法。String.format()能够把int、double转化成我们想要的字符串。
举两个例子:

显示两位数字,不足补0,一般用于分秒的显示

int a = 5;
//d:整数
//2:两位
//0:不足补0
String.format("%02d", a);

结果为05

保留一位小数:

float b = 8.932f;
//.1f:一位小数
String.format("%.1f",b);

结果为8.9

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场