Date和String.format常见用法

目前的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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值