2014-07-03 16 views
20

Có vẻ như tôi không thể quản lý để có được ngày UTC bash trong giây. Tôi đang ở Sydney để + 10hours UTC thời gianBash nhận thời gian UTC ở giây

date 
Thu Jul 3 17:28:19 WST 2014 

date -u 
Thu Jul 3 07:28:20 UTC 2014 

Nhưng khi tôi cố gắng để chuyển đổi nó, tôi nhận được kết quả tương tự mà không phải là thời gian tính theo giờ UTC

date +%s 
1404372514 

date -u +%s 
1404372515 

tôi đang thiếu gì ở đây?


Sau khi nhận được câu trả lời cho biết date +%s đã trả lại giờ UTC, dưới đây là thông tin chi tiết về sự cố mà tôi đang gặp phải.

Tôi đang cố gắng so sánh ngày được viết trong tệp có python. Ngày này được viết bằng giây trong giờ UTC. Và bash date +%s không cho tôi một cái. Trên thực tế nếu tôi đang làm trong python time.asctime(time.localtime(date_in_seconds_from_bash)), tôi nhận được thời gian hiện tại của Sydney, không phải là UTC. Tôi không hiểu.

+0

Bạn có muốn thời gian tính bằng giây kể từ ngày bắt đầu không? tuần ? tháng ? Năm? –

+0

Điều đó thậm chí không có ý nghĩa? –

+0

Giá trị trả về của 'ngày +% s' thực sự là UTC – anubhava

Trả lời

10

Tôi tin rằng% s là giây kể từ thời đại. Đó là bất biến múi giờ.

+0

dù sao để có được ngày trong UTC giây? –

+3

@RomanzoCriminale Theo 'ngày --giúp':'% s giây từ 1970-01-01 00:00:00 UTC'. Thêm '-u' không tạo ra sự khác biệt. Nó vẫn sẽ in dựa trên UTC. Đây là lý do tại sao bạn đã nhận được cùng một giá trị. – konsolebox

+1

Cả hai câu trả lời của bạn ở trên là chính xác. Số giây của UTC giống nhau ở bất kỳ nơi nào trên thế giới và vì vậy hữu ích cho dấu thời gian phi thường. Giây từ năm 1970 nửa đêm ở Sydney có thể được tính toán bằng cách lấy sự khác biệt giữa thời gian đó và thời gian không UTC (-trên 11 hoặc hơn giờ tôi giả sử), nhưng con số đó có lẽ không phải là những gì bạn muốn. – JamesNoonan33

5

Bạn nói rằng bạn đang sử dụng:

time.asctime(time.localtime(date_in_seconds_from_bash)) 

nơi date_in_seconds_from_bash có lẽ là đầu ra của date +%s.

Chức năng time.localtime, như tên ngụ ý, cung cấp cho bạn giờ địa phương.

Nếu bạn muốn UTC, hãy sử dụng time.gmtime() thay vì time.localtime().

JamesNoonan33's answer cho biết, đầu ra của date +%s là bất biến múi giờ, vì vậy date +%s chính xác tương đương với date -u %s. Nó in số giây kể từ "kỷ nguyên", là 1970-01-01 00:00:00 UTC. Kết quả bạn hiển thị trong câu hỏi của mình hoàn toàn phù hợp với câu hỏi đó:

date -u 
Thu Jul 3 07:28:20 UTC 2014 

date +%s 
1404372514 # 14 seconds after "date -u" command 

date -u +%s 
1404372515 # 15 seconds after "date -u" command 
5

Tôi đặt cược đây là kết quả dự định.

$ date -u [email protected] 
Thu Jul 3 07:28:34 UTC 2014 
Các vấn đề liên quan