ISO-8601日期时间到Java中的秒数的字符串

时间:2013-12-02 07:01:44

标签: java datetime isodate

如何使用Java将ISO-8601日期时间字符串(例如:2012-05-31T13:48:04Z)转换为秒数(10 digit integer)?

3 个答案:

答案 0 :(得分:2)

试试这种方式

String DateStr="2012-05-31T13:48:04Z";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
Date d=sdf.parse(DateStr);
System.out.println(d.getTime());

输出 1338452284000

来自OP 的评论 getTime()返回自此Date对象表示的1970年1月1日00:00:00 GMT以来的毫秒数。Source

答案 1 :(得分:1)

使用SimpleDateFormat并使用yyyy-MM-dd 'T' HH:mm:ss 'Z'

等格式

答案 2 :(得分:0)

TL;博士

Instant instant = Instant.parse( "2012-05-31T13:48:04Z" ) ;
  

1338472084

请参阅此code run live at IdeOne.com

使用java.time

java.time类更容易取代麻烦的旧遗留日期时间类。

易于解析输入字符串,因为java.time类在生成/解析字符串时默认使用ISO 8601格式。因此无需指定格式化模式。

Instant类代表UTC中时间轴上的一个时刻,分辨率为nanoseconds(小数部分最多九(9)位)。

1970-01-01T00:00:00Z

我猜你用“秒”表示自UTC 1970年开始以来经过的秒数(Instant)。 long secondsSinceEpoch = instant.getEpochSecond() ; 类可以告诉您自Unix epoch以来的秒数。

class good_auction(object):

    def __init__(self):
        self.driverPath = r"D:\python code\NaverBlogCralwer\NaverBlogCralwer\chromedriver.exe"
        self.driver = webdriver.Chrome(self.driverPath)


    def main_scrape(self):
        self.driver.get('http://www.goodauction.com/index.php')
        time.sleep(5)
        self.driver.find_element_by_name('client_id').send_keys("myid")
        self.driver.find_element_by_id("pwd_dummy").send_keys('mypassword')


if __name__ == '__main__':
    scraper = good_auction()
    scraper.main_scrape()
  

1338472084

显然要注意数据丢失。您忽略了日期时间值中可能存在的任何小数秒。

关于java.time

java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendar和& SimpleDateFormat

现在位于Joda-Timemaintenance mode项目建议迁移到java.time类。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310

从哪里获取java.time类?

ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuartermore