JAVA中如何获取毫秒和微秒数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA中如何获取毫秒和微秒数相关的知识,希望对你有一定的参考价值。

是用哪个类中的哪个方法?最好把代码发上来看下 谢谢大家

一、获取毫秒数的代码:

(1)System.currentTimeMillis() 这种方式速度最快。

(2)Calendar.getInstance().getTimeInMillis() 这种方式速度最慢。

二、获取微秒数的代码:

微秒使用System.nanoTime()方法:如果Java程序需要高精度的计时,如1毫秒或者更小,使用System.nanoTime()方法,可以满足需求。

扩展资料:

获取微秒函数System.nanoTime() 的隐患:

System.currentTimeMillis() 起始时间是基于 1970.1.1 0:00:00 这个确定的时间的,而System.nanoTime()是基于cpu核心的时钟周期来计时,它的开始时间是不确定的。

但是在多核处理器上,由于每个核心的开始时间不确定,那么

“long start = System.nanoTime();String ip = Utilities.getIpByUrl(url);long cost = System.nanoTime() - start;  ”

这段代码有可能会运行在两个不同的cpu核心上,从而导致得到的结果完全不符逻辑。

参考技术A public static void main(String[] args)
// TODO Auto-generated method stub
Date dt= new Date();
Long time= dt.getTime();//这就是距离1970年1月1日0点0分0秒的毫秒数
System.out.println(System.currentTimeMillis());//与上面的相同


至于java中取微秒数,似乎不准确。精确不到微秒级别。有时还与操作系统有关。本回答被提问者采纳
参考技术B public class TestTime
public static void main(String[] args)
Date d = new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS");//其中yyyy-MM-dd是你要表示的格式
// 可以任意组合,不限个数和次序;具体表示为:MM-month,dd-day,yyyy-year;kk-hour,mm-minute,ss-second;
String str=sdf.format(d);
System.out.println("The date is : "+ str);


参考技术C 很简单的什么import都不用
long time = System.currentTimeMillis();
这个long的time就是你要的时间了 想怎么用随便你

java中想获取前一天的开始和结束的两个毫秒数,请问分别怎样获取???????

就是我想查询前一天的数据,前一天是一个时间段啊,所以想获取前一天开始跟结束两个时间点的毫秒数,不是返回前台,是用来作为条件查询的

方法一:
Date date=new Date();
String ss= ""+date.getTime();
Calendar c = Calendar.getInstance();
long l = c.getTimeInMillis();

方法二:
Date dt= new Date();
Long time= dt.getTime();
Long time2=System.currentTimeMillis();

这里提供了两种方式获取时间,但是如果想获取前一天的时间,用日历类实现即可。追问

不行啊。我是在做一个数据统计,需要在后台计算出前一天的时间段,然后操作数据返回页面

追答

我具体写了一下如何改变日期,希望有用。

public class Test02 
public static void main(String args[]) 
Calendar c = Calendar.getInstance();
System.out.println("昨天是:"+c.getTime());
//System.out.println("今天是:"+c.get(Calendar.YEAR)+"年"+c.get(Calendar.MONTH+1)+"月"+c.get(Calendar.DAY_OF_YEAR)+"日");
c.add(Calendar.DAY_OF_YEAR, -1);
System.out.println("昨天是:"+c.getTime());
//System.out.println("今天是:"+c.get(Calendar.YEAR)+"年"+c.get(Calendar.MONTH+1)+"月"+c.get(Calendar.DAY_OF_YEAR)+"日");
long time1 = c.getTimeInMillis();
long randtime=(long)(Math.random()*(long)Math.pow(10, 6));
long time2 = c.getTimeInMillis()+randtime;
System.out.println(time1 + "," + time2);

 其中long randtime=(long)(Math.random()*(long)Math.pow(10, 6));是随机产生的一个值,如果你是一天中的时间段,是不是用这个值可以控制时间段的长度,知道开始时间和时间段长度就可以知道结束时间。

参考技术A 如果你要是做数据库查询条件的话,就可以直接用写一个自定义函数来获得当前日期的最大和最小时间:
CREATE FUNCTION f_GetThisDayBeginTime
(
@datetime datetime
)
RETURNS datetime
AS
BEGIN
RETURN convert(datetime,CONVERT(varchar(10),@datetime,120))
END

CREATE FUNCTION [dbo].[f_GetThisDayEndTime]
(
@datetime datetime
)
RETURNS datetime
AS
BEGIN
SET @datetime=CONVERT(VARCHAR(10),@datetime,120)+' 23:59:59.999'
RETURN(@datetime)
END

如果在java里面做的话:
Calendar cal1 = Calendar.getInstance();
cal1.set(2000, 7, 1, 0, 0, 0);
cal2.set(Calendar.MILLISECOND, 0);

Calendar cal1 = Calendar.getInstance();
cal1.set(2000, 7, 1, 23, 59, 59);
cal2.set(Calendar.MILLISECOND, 999);
参考技术B 问楼主,主要想实现的功能是什么?这两个毫秒数返回到前台是没有意义的啊,你是想从数据库里读取前一天的所有数据嘛?追问

就是我想查询前一天的数据,前一天是一个时间段啊,所以想获取前一天开始跟结束两个时间点的毫秒数,不是返回前台,是用来作为条件查询的

追答

不知道这是不是你想要的
public static String dateToMs(String dateTime)
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dm = null;
try
dm = sdf.parse(dateTime);
catch (ParseException e)
e.printStackTrace();

return String.valueOf(dm.getTime());


public static void main(String[] args)
System.out.println(dateToMs("2013-08-18 00:00:00"));
System.out.println(dateToMs("2013-08-19 00:00:00"));

打印结果:
1376755200000
1376841600000

以上是关于JAVA中如何获取毫秒和微秒数的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Java 8 中的 LocalDateTime 获取毫秒数

如何获得 MySQL 毫秒,微秒

mysql5.5时间戳能不能精确到毫秒?

Java中系统时间的获取_currentTimeMillis()函数应用解读

java中,如何获取23小时前的时间 返回值需要date型。

java如何获取数据库中datetime类型数据