无法理解为什么会发生以下情况:

String date = "06-04-2007 07:05";
SimpleDateFormat fmt = new SimpleDateFormat("MM-dd-yyyy HH:mm");
Date myDate = fmt.parse(date); 

System.out.println(myDate);  //Mon Jun 04 07:05:00 EDT 2007
long timestamp = myDate.getTime();
System.out.println(timestamp); //1180955100000 -- where are the milliseconds?

// on the other hand...

myDate = new Date();
System.out.println(myDate);  //Tue Sep 16 13:02:44 EDT 2008
timestamp = myDate.getTime();
System.out.println(timestamp); //1221584564703 -- why, oh, why?

===============>>#1 票数:20 已采纳

几毫秒? 您在第一个示例中仅提供了分钟信息,而您的第二个示例以毫秒为单位从系统中获取当前日期,您正在寻找什么?

String date = "06-04-2007 07:05:00.999";
SimpleDateFormat fmt = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss.S");
Date myDate = fmt.parse(date);

System.out.println(myDate); 
long timestamp = myDate.getTime();
System.out.println(timestamp);

===============>>#2 票数:2

同意上述内容,不应该有任何毫秒。

===============>>#3 票数:2

因为您指定的简单日期格式会丢弃毫秒。 因此生成的Date对象没有该信息。 所以当你把它打印出来时,全是0。

另一方面,Date对象在为其分配一个毫秒的值(在这种情况下,使用新的Date())时会保留毫秒数。 因此,当您打印出来时,它也包含毫秒数。

===============>>#4 票数:2

我没有使用Sun JDK时间/日期库(这有很多不足之处),我建议您查看http://joda-time.sourceforge.net

这是一个非常成熟和活跃的sourceforge项目,并且具有非常优雅的API。

===============>>#5 票数:0

import java.util.*;

public class Time {
    public static void main(String[] args) {
        Long l = 0L;
        Calendar c = Calendar.getInstance();
        //milli sec part of current time
        l = c.getTimeInMillis() % 1000;  
        //current time without millisec
        StringBuffer sb = new StringBuffer(c.getTime().toString());
        //millisec in string
        String s = ":" + l.toString();
        //insert at right place
        sb.insert(19, s);
        //ENJOY
        System.out.println(sb);
    }
}

===============>>#6 票数:0

解析日期时,它仅使用您提供的信息。 在这种情况下,它只知道MM-dd-yyyy HH:mm。

创建新的日期对象将返回当前系统日期/时间(自纪元以来的毫秒数)。

===============>>#7 票数:0

Date对象的toString()没有显示毫秒......但它们就在那里

所以新的Date()是具有毫秒分辨率的对象,可以通过以下方式看出:

  System.out.printf( "ms = %d\n", myDate.getTime() % 1000 ) ;

但是,使用SimpleDateFormat构造日期时,不会向其传递毫秒数

我在这里错过了这个问题吗?

[编辑]哈哈哈......太慢了;)

===============>>#8 票数:0

Date.getTime返回自Date对象表示的自1970年1月1日00:00:00 GMT以来的毫秒数。 所以“06-04-2007 07:05” - “01-01-1970 00:00”等于1180955340000毫秒。 由于您的问题唯一关注的是日期的时间部分,因此粗略思考此计算的方法是07:05和00:00之间的毫秒数,即25500000.由于两次都没有,因此可以被1000整除有任何毫秒。

在第二个日期,它使用执行该行代码时的当前时间。 这将使用当前秒的当前毫秒数在计算中。 因此,Date.getTime很可能会返回一个不能被1000整除的数字。

===============>>#9 票数:0

DategetTime()方法返回自1970年1月1日以来的毫秒数(此日期称为“epoch”,因为所有计算机日期都基于此日期)。 应该用于显示您的日期的人类可读版本。

请改用SimpleDateFormat.format()方法。 以下是我认为可以解决您的问题的部分代码的修订版本:

String date = "06-04-2007 07:05:23:123";
SimpleDateFormat fmt = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss:S");
Date myDate = fmt.parse(date); 

System.out.println(myDate);  //Mon Jun 04 07:05:23 EDT 2007
String formattedDate = fmt.format(myDate);
System.out.println(formattedDate); //06-04-2007 07:05:23:123

  ask by Jake translate from so

未解决问题?本站智能推荐:

2回复

Java Date getTime算法

java.util.Date.getTime方法如何将给定的日期和时间转换为长数? Java API文档说 - “返回自此Date对象表示的自1970年1月1日00:00:00 GMT以来的毫秒数。” 感谢任何帮助。
2回复

从Calendar.getTime()设置日期值时年份不正确

我正在为Android构建CalendarDisplay应用程序。 除其他事项外,该应用程序允许用户选择要添加到纪元的天数(纪元是1899年的日期),并且该结果将以图形方式显示在显示屏上。 但是,当我从Calendar值设置Date值时,我得到了意外的结果:该年份似乎偏离了1900的值。虽然
3回复

javascript getTime()和Java getTime()之间的区别

似乎Java和JavaScript对于负毫秒值给出了不同的结果。 JAVA: JavaScript的: 他们的输出有10天的差异。 但是对于某些值,相差不到10天。 我使用W3C TryIt编辑器来测试JavaScript输出。 我不知道偏差从哪里开始。 我在这里做
3回复

如何在Java中创建对象时实现Date?

这是一个功课。 我必须实现以下内容: private Date date在创建对象时存储哪个存储。 dateCreated的getter方法。 并且必须实现这个主要方法: 我已经尝试过使用getTime(),但我不知道如何在我的代码中使用它。 我看到了一些解决方
1回复

日历至日期发行,期限为1年,错误

这是我第一次问,我无法在所有互联网上找到解释,因此您可以:我正在编写一个简单的函数来计算x天前的日期,因此我编写的代码运行得很好,直到今天,过去的计算日期是将来的1年,但不是所有值,仅11天前,其余时间就可以了。 如果今天执行此代码,您将获得以下输出: 您可以在此处执行 差异:-11
2回复

python函数返回javascript date.getTime()

我正在尝试创建一个简单的python函数,它将返回与javascript new Date().getTime()方法相同的值。 至于写在这里 ,javascript中的getTime()方法返回从1/1/1970毫秒数 所以我只是编写了这个python函数: 而参数dtime是
1回复

JavaScript Date.getTime()(毫秒)如何映射到64位浮点数?

我对JavaScript的Date对象及其getTime()方法感到困惑。 从: 最小和最大日期 它表示实际的最大和最小。 自1970年1月1日UTC以来,JS Date对象可表示的毫秒数(-/ +)8.640.000.000.000.000 ms。 但是,8.640.000.0
2回复

如何使用gettime()获取C中的当前时间?

我们需要使用gettime()来获取C中的当前时间。我正在尝试打印当前时间,但报错: 错误:“ t”的存储大小未知 发生。 我不知道该怎么解决。 这是代码:
2回复

为什么Javascript中的getTime()与时区无关?

我试图了解在不同时区执行(new Date()).getTime()是否安全。 通过阅读此问题,似乎它实际上是与时区无关的(假设正确地设置了执行脚本的计算机上的时间)。 但是,由于它是自1970年1月1日以来的毫秒数,因此,如果我们从下一个时区执行相同的脚本,为什么它相差3600 *
2回复

Javascript getTime到php日期

我有javascript使用getTime()将我视图中的日期转换为时间字符串。 然后将其存储为我的选择表单中的选项值。 一旦它传递给PHP,我该如何将其转换为php日期? 我已经做好了: