【问题标题】:Getting unix timestamp from Date()从 Date() 获取 unix 时间戳
【发布时间】:2011-12-08 17:22:35
【问题描述】:

我可以通过将long 值放入Date() 构造函数来将unix 时间戳转换为Date() 对象。例如:我可以将其命名为new Date(1318762128031)

但在那之后,我怎样才能从 Date() 对象中取回 unix 时间戳?

【问题讨论】:

标签: java date


【解决方案1】:

getTime() 检索自 1970 年 1 月 1 日 GMT 传递给构造函数以来的毫秒数。从中获得Unix time(相同,但以秒为单位)应该不会太难。

【讨论】:

  • 谢谢。我一直错误地把它记为一个静态函数 Date.getTime(new Date()) ,它不起作用,我想这是怎么回事。
  • @jackrabbit:实际上 getTime() 不会返回 Unix 时间戳,而是返回“Unix 时间戳 * 1000”。关于 Unix 时间戳的一致定义是,它以秒为单位给出自纪元以来的时间,而不是毫秒; )
  • @TacticalCoder jackrabbit 更准确:它以毫秒为单位返回 unix-timestamp。是的,unix-timestamp 被同意以秒为单位——但如果你的答案是真的,(getTime() = unixTimestamp * 1000),getTime() 总是会在最后返回三个零,但实际上可以返回任何以 @987654326 结尾的东西@ to 999,这意味着它由于毫秒而具有更高的精度,而不仅仅是“* 1000”。含义:将真实的 unixTimestamp*1000 与 getTime() 结果进行比较只会在大约 0.1% 的情况下成功。
  • 作为记录,该函数返回 GMT-0 区域(格林威治)的毫秒数,因此您可以放心地将其转换为不同的区域。
【解决方案2】:

要从Date() 获得timestamp,您需要将getTime() 除以1000,即:

Date currentDate = new Date();
currentDate.getTime() / 1000;
// 1397132691

或者简单地说:

long unixTime = System.currentTimeMillis() / 1000L;

【讨论】:

  • 或者更简洁:new Date().getTime()
【解决方案3】:
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.TimeZone;

public class Timeconversion {
    private DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmm", Locale.ENGLISH); //Specify your locale

    public long timeConversion(String time) {
        long unixTime = 0;
        dateFormat.setTimeZone(TimeZone.getTimeZone("GMT+5:30")); //Specify your timezone
        try {
            unixTime = dateFormat.parse(time).getTime();
            unixTime = unixTime / 1000;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return unixTime;
    }
}

【讨论】:

    【解决方案4】:

    在java 8中,方便使用新的日期库和getEpochSecond方法获取时间戳(秒)

    Instant.now().getEpochSecond();

    【讨论】:

    • 但呈现的代码返回 this 时刻的秒数
    • 真的,@MilanVelebit。您必须替换您想要的Instant 而不是Instant.now()。或者 yourDesiredJavaUtilDate.toInstant(),如果您从旧版 API 获得了老式的 Date
    【解决方案5】:

    我不知道你是想用js还是java来实现,用js最简单的方法来获取unix timestampt(这是从1970年1月1日开始以秒为单位的时间)如下:

    var myDate = new Date();
    console.log(+myDate); // +myDateObject give you the unix from that date
    

    【讨论】:

      【解决方案6】:

      使用SimpleDateFormat 类。看看它的 javadoc:它解释了如何使用格式开关。

      【讨论】:

        猜你喜欢
        • 2011-05-15
        • 2012-12-09
        • 2012-08-05
        • 1970-01-01
        • 2012-10-15
        • 2012-03-17
        • 1970-01-01
        • 2012-03-04
        • 2013-05-28
        相关资源
        最近更新 更多