从Date()获取Unix时间戳


85

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

但是之后,如何从该Date()对象取回unix时间戳?


您仍然可以获得Date对象的long值,不是吗?
肯特

@xEnOn:您不会通过使用long构造函数将Unix时间戳转换为日期。正如我对jackrabbit的回答所评论的那样,Unix时间戳以秒而不是毫秒表示。此处:en.wikipedia.org/wiki/Unix_time以及此处:unixtimestamp.com/index.php 秒。不是毫秒。
TacticalCoder

Answers:


93

getTime()检索自格林尼治标准时间1970年1月1日传递给构造函数以来的毫秒数。从中获得Unix时间(相同,但以秒为单位)应该并不难。


1
谢谢。我一直记错它是一个静态函数Date.getTime(new Date()),该函数不起作用,并认为发生了什么事。
嘉宏

47
@jackrabbit:实际上,getTime()不会返回Unix时间戳,而是“ Unix时间戳* 1000”。关于Unix时间戳的公认定义是,它以秒为单位给出自纪元以来的时间,而不是毫秒。)
TacticalCoder

3
@TacticalCoder jackrabbit更加准确:它以毫秒为单位返回unix时间戳。是的,UNIX的时间戳同意以秒-但如果你的答案是真实的,( getTime() = unixTimestamp * 1000),getTime()总是在最后返回三个零,但实际上能够从结尾返回任何东西000999,它有它意味着更高的精度(以毫秒为单位),而不仅仅是“ * 1000”。含义:将真实的unixTimestamp * 1000与getTime()结果进行比较只能在约0.1%的情况下成功。
犬牙

作为记录,该函数返回格林尼治标准时间(GMT-0)区域中的毫秒数(在格林威治中),因此可以安全地将其转换为其他区域。
Onat Korucu,

50

为了得到一个timestampDate(),你需要来划分getTime()1000,即:

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

或者简单地:

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

1
或更简洁:new Date().getTime()
MarkHu '16

25
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;
    }
}

6

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

Instant.now().getEpochSecond();


但是,代码呈现收益秒#为一刻
米兰韦莱比特

是的,@ MilanVelebit。您将不得不替换您想要InstantInstant.now()。或者,yourDesiredJavaUtilDate.toInstant()如果您Date从旧版API获得过时的版本。
Ole VV

0

我不知道您是否想在js或java中实现这一点,在js中获得unix时间戳的最简单方法(这是从1970年1月1日开始的秒数),它如下:

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

-1

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.