Tag: 时间

如何比较Java中的原始时间?

例如,假设我有 String endTime = “16:30:45”; 我如何确定现在是否在此之前?

如何确定Java之间的现在和任意未来日期之间的时间

我目前正在尝试确定两个日期之间的时间量(其中一个是当前日期/时间,另一个是任意的未来日期)。 我只使用原生Java和Android API,但我遇到GregorianCalendar的一些问题。 到目前为止,我的代码可以在下面看到,但我遇到的问题是两个日期之间的时间非常不准确。 你可以看到我在这个例子中将未来的日期设定为圣诞节,但它告诉我那时已有超过62天,这显然是错误的。 date = new GregorianCalendar(); currentTime = date.getTimeInMillis(); calendar = new GregorianCalendar(); calendar.set(2011, 12, 25, 0, 0, 0); long difference = calendar.getTimeInMillis()-currentTime; long x = difference / 1000; seconds = x % 60; x /= 60; minutes = x % 60; x /= 60; hours = x % 24; x /= […]

时间不会在Applet中重新绘制

我有一个小问题,但我不知道要解决它。 我创建了简单的Applet,其中应该是简单的数字时钟。 我正确地创建了所有方法,但重绘方法不会重新绘制我的applet。 你能检查我的代码并说出错误的地方吗? 谢谢。 public class DigitalClock extends JApplet implements Runnable { private Thread timeThread; Date date = new Date(); public void start() { timeThread = new Thread(this, “Clock”); timeThread.start(); } @Override public void stop() { if (timeThread == null) { return; } timeThread = null; } @Override public void run() { while (timeThread […]

将String及时转换为没有Date的Time对象

我有问题将String time转换为Time对象,因为它与Date一起打印。 这是我的代码。 String time = “15:30:18”; DateFormat sdf = new SimpleDateFormat(“hh:mm:ss”); Date date = sdf.parse(time); System.out.println(“Time: ” + date); 如何转换和打印时间只在没有日期的Java中。 如果你举一个例子会更好。 谢谢。

java.lang.System.currentTimeMillis()替换方法

除了重新编译rt.jar有什么办法可以用我自己的一个替换currentTimeMillis()调用吗? 1#正确的方法是使用Clock对象和抽象时间。 我知道但我们将运行由无数开发人员开发的代码,这些开发人员尚未实现Clock或者已经实现了自己的实现。 2#使用像JMockit这样的模拟工具来模拟该类。 即使这只适用于Hotspot禁用-Xint并且我们使用下面的代码成功,但它不会“持久”在外部库上。 这意味着你必须在任何地方模拟它,因为代码不受我们的控制,是不可行的。 main()下的所有代码都返回0 milis(如示例所示),但new DateTime()将返回实际的系统millis。 @MockClass(realClass = System.class) public class SystemMock extends MockUp { // returns 1970-01-01 @Mock public static long currentTimeMillis() { return 0; } } 3#使用-Xbootclasspath/p (已编辑) 重启System 尽管可能,虽然您可以创建/更改方法,但有问题的方法被声明为public static native long currentTimeMillis(); 。 如果不深入研究Sun的专有和原生代码,你就不能改变它的声明,这将使这成为逆向工程和不稳定的方法。 所有最近的SUN JVM都崩溃,出现以下错误: EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00000, pid=4668, tid=5736 4#使用自定义ClassLoader (评论中建议的新测试) 虽然使用-Djava.system.class.loader替换系统CL是微不足道的, -Djava.system.class.loader JVM实际上会使用默认的classLoader加载自定义classLoader,而System甚至不会通过自定义CL推送。 public […]

Java中的CPU执行时间

我想计算我的函数在Java中执行需要多少CPU时间。 目前我正在做如下。 long startTime = System.currentTimeMillis(); myfunction(); long endTime = System.currentTimeMillis(); long searchTime = endTime – startTime; 但我发现,对于相同的I / PI,根据系统负载获得不同的时间。 那么,如何获得我的函数执行所需的精确CPU时间。

ISO 8601 Java时间间隔解析

ISO 8601定义了表示时间间隔的语法。 表达时间间隔有四种方式: 开始和结束,例如“2007-03-01T13:00:00Z / 2008-05-11T15:30:00Z” 开始和持续时间,例如“2007-03-01T13:00:00Z / P1Y2M10DT2H30M” 持续时间和结束,例如“P1Y2M10DT2H30M / 2008-05-11T15:30:00Z” 仅限持续时间,例如“P1Y2M10DT2H30M”,带有其他上下文信息 如果结束值中缺少任何元素,则假定它们与包括时区的起始值相同。 该标准的这一特征允许简洁地表示时间间隔。 例如,包括开始和结束时间在内的两小时会议的日期可以简单地显示为“2007-12-14T13:30/15:30”,其中“/ 15:30”表示“/ 2007-12-” 14T15:30“(与开始时间相同),或每月结算期间的开始和结束日期为”2008-02-15 / 03-14“,其中”/ 03-14“表示”/ 2008-03 -14“(与开始的同一年)。 另外,通过在间隔表达式的开头添加“R [n] /”来形成重复间隔,其中R用作字母本身,[n]由重复次数代替。 省略[n]的值意味着无限次重复。 因此,要从“2008-03-01T13:00:00Z”开始重复“P1Y2M10DT2H30M”的间隔五次,请使用“R5 / 2008-03-01T13:00:00Z / P1Y2M10DT2H30M”。 我正在寻找一个好的Java解析器(如果可能与Joda-Time库兼容)来解析这个语法。 任何指向好图书馆的指针?

在Java中运行x秒的代码?

我想写一个java while循环,它将迭代15秒。 我认为这样做的一种方法是存储当前系统时间+ 15秒,然后将其与while循环签名中的当前时间进行比较。 有没有更好的办法?

我可以使用mockito来匹配具有自动更新时间戳的对象吗?

在进行模拟调用之前自动更新时间戳的最佳方法是什么? 这是我试图测试的一些虚拟代码: public class ThingWithATimestamp { public Long timestamp; public String name; public ThingWithATimestamp(String name) { this.name = name; } } public class TheClassThatDoesStuff { private ThingConnector connector; public TheClassThatDoesStuff(ThingConnector connector) { this.connector = connector; } public void updateTheThing(MyThingWithATimestamp thing) { thing.timestamp = currentTimestamp(); connector.update(thing); } } 这是我想要测试的: public class TheClassThatDoesStuffTests { @Test public void […]

如何在Java中以微秒精度测量时间?

我在互联网上看到我应该使用System.nanoTime(),但这对我不起作用 – 它给了我毫秒精度的时间。 我只需要在函数执行之前和之后的微秒,这样我就知道需要多长时间。 我正在使用Windows XP。 基本上,我有这样的代码,例如,在java链表中进行了100万到1000万次插入。 问题是我无法测量精确度; 有时,在较小的列表中插入所有内容所需的时间较少。 这是一个例子: class test { public static void main(String args[]) { for(int k=1000000; k<=10000000; k+=1000000) { System.out.println(k); LinkedList aux = new LinkedList(); //need something here to see the start time for(int i=0; i<k; i++) aux.addFirst(10000); //need something here to see the end time //print here the difference […]