一、时间的单位转换
1秒=1000毫秒(ms) 1毫秒=1/1,000秒(s)
1秒=1,000,000 微秒(μs) 1微秒=1/1,000,000秒(s)
1秒=1,000,000,000 纳秒(ns) 1纳秒=1/1,000,000,000秒(s)
1秒=1,000,000,000,000 皮秒(ps) 1皮秒=1/1,000,000,000,000秒(s)
1分钟=60秒
1小时=60分钟=3600秒
二、system.currenttimemillis()计算方式
在开发过程中,通常很多人都习惯使用new date()来获取当前时间。new date()所做的事情其实就是调用了system.currenttimemillis()。如果仅仅是需要或者毫秒数,那么完全可以使用system.currenttimemillis()去代替new date(),效率上会高一点。如果需要在同一个方法里面多次使用new date(),通常性能就是这样一点一点地消耗掉,这里其实可以声明一个引用。
//获得系统的时间,单位为毫秒,转换为妙 long totalmilliseconds = system.currenttimemillis(); long totalseconds = totalmilliseconds / 1000; //求出现在的秒 long currentsecond = totalseconds % 60; //求出现在的分 long totalminutes = totalseconds / 60; long currentminute = totalminutes % 60; //求出现在的小时 long totalhour = totalminutes / 60; long currenthour = totalhour % 24; //显示时间 system.out.println("总毫秒为: " totalmilliseconds); system.out.println(currenthour ":" currentminute ":" currentsecond " gmt");
小例子:
package demo.spli; import java.text.dateformat; import java.text.simpledateformat; import java.util.date; import java.util.timezone; public class showcurrenttime { /** * @显示当前时间 * @2014.9.3 */ public static void main(string[] args) { // todo auto-generated method stub //获得系统的时间,单位为毫秒,转换为妙 long totalmilliseconds = system.currenttimemillis(); dateformat dateformatterchina = dateformat.getdatetimeinstance(dateformat.medium,dateformat.medium);//格式化输出 timezone timezonechina = timezone.gettimezone("asia/shanghai");//获取时区 这句加上,很关键。 dateformatterchina.settimezone(timezonechina);//设置系统时区 long totalseconds = totalmilliseconds / 1000; //求出现在的秒 long currentsecond = totalseconds % 60; //求出现在的分 long totalminutes = totalseconds / 60; long currentminute = totalminutes % 60; //求出现在的小时 long totalhour = totalminutes / 60; long currenthour = totalhour % 24; //显示时间 system.out.println("总毫秒为: " totalmilliseconds); system.out.println(currenthour ":" currentminute ":" currentsecond " gmt"); date nowtime = new date(system.currenttimemillis()); system.out.println(system.currenttimemillis()); simpledateformat sdformatter = new simpledateformat("yyyy-mm-dd hh:mm:dd"); string retstrformatnowdate = sdformatter.format(nowtime); system.out.println(retstrformatnowdate); } }
system.currenttimemillis() 3600*1000)可以这样解读:system.currenttimemillis()相当于是毫秒为单位,但是,后头成了1000,就变成了以秒为单位。那么,3600秒=1小时,所以输出为当前时间的1小时后。
我们可以这样控制时间:system.currenttimemillis() time*1000),里面传入的time是以秒为单位,当传入60,则输出:当前时间的一分钟后