将秒数转化为日期、时、分、秒

1.说明

笔者最近在开发过程中,需要进行时间上的处理的地方比较多,有时候没有处理好导致出现各种的错误。这里主要是讲一下,如何时将秒数的时间转化为"yyyy-MM-dd HH:mm:ss"的格式,例如:2016-12-04 16:40:23的格式。为了更好的转化时间,笔者用了Calendar和SimpleDateFormat的类。如果想了解更多这个两个类的用法,读者可以自己去看java的API。

2.秒数转时间

   相信读者对于如何将秒数转化为时间“HH:mm:ss”的格式是没有问题的,无非就是将秒数除以3600得到小时,然后将余数除以60得到分钟,得到的余数就是秒了。这里就不多说了。主要介绍如何获取到当前的年、月、日。这里笔者向大家介绍的是Calendar的类。获取当前的年通过Calendar.YEAR、得到月份Calendar.MONTH、得到日Calendar.DAY_OF_MONTH.

需要注意的是,我们获取到的月份是从0开始的,所以需要加1。

public class ChangeTime {

	public static void main(String[] args) {
		//时间总的秒数
		int seconds = 30654;
		//开始时间
		int startHours = seconds/3600;
		int startMinutes = (seconds%3600)/60;
		int startSeconds = (seconds%3600)%60;
		
		Calendar cal=Calendar.getInstance();//使用日历类
		SimpleDateFormat format =  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//时间格式
		
		//时间:yyyy-MM-dd HH:mm:ss
		String startDateStr = cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH)+1)
		           + "-" + cal.get(Calendar.DAY_OF_MONTH) + " " + startHours
		           + ":" + startMinutes + ":" + startSeconds;
		System.out.println("时间:" + startDateStr);

	}

}

需要注意的是,我们输出的时间如果是一位数的,那么可能不会自己加“0”。如:08:06:02,可能就是8:6:2的形式。那么这样的话,就需要自己用正则表达式"^\\d{1}$"做判断,然后补“0”.读者可以自己实现。

3.将"EEE MMMddHH:mm:ss 'CST' yyyy"格式时间转化为“HH:mm:ss”

String stringDate = "Sun Dec 04 12:38:59 CST 2016";
		SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM ddHH:mm:ss 'CST' yyyy",Locale.US);
		try {
			Date date = sdf.parse(stringDate);
			sdf= new SimpleDateFormat("HH:mm:ss");    
			System.out.println(sdf.format(date));
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}




你可能感兴趣的:(Java)