Cách chuyển đổi DATE thành UNIX TIMESTAMP trong shell script trên MacOS


76

Trên Linux, bạn có thể chuyển đổi một ngày như "2010-10-02" thành dấu thời gian unix trong shell script bằng cách

date -d "2010-10-02" "+%s"

Vì Mac OS không có -d tương đương cho ngày . Làm thế nào để bạn chuyển đổi một ngày thành một dấu thời gian unix trong một tập lệnh shell.

Câu trả lời:


35

man date trên OSX có ví dụ này

date -j -f "%a %b %d %T %Z %Y" "`date`" "+%s"

Mà tôi nghĩ nó làm những gì bạn muốn.

Bạn có thể sử dụng cái này cho một ngày cụ thể

date -j -f "%a %b %d %T %Z %Y" "Tue Sep 28 19:35:15 EDT 2010" "+%s"

Hoặc sử dụng bất kỳ định dạng nào bạn muốn.


ON OSX Terminal sử dụng bash shell Tôi không thể sử dụng lệnh trên. Ví dụ: currDate = date +%Y%m%ddate -j -f "% a% b% d% T% Z% Y" "$ {currDate}" "+% s"
Người học

1
@Jagdeep Tính năng này chỉ hoạt động trên OSX nếu Múi giờ được chỉ định là múi giờ của hệ thống. Tôi đang ở PDTnhư vậy trong lệnh trên, thay đổi EDTwtih PDTphù hợp với tôi.
linuxeasy

136
date +%s

Điều này hoạt động tốt đối với tôi trên OS X Lion.


9
Hoạt động tốt trong Linux (Ubuntu 10.04)
Irfan

3
OP hỏi về việc chuyển đổi một ngày cụ thể thành dấu thời gian. date +%ssẽ chỉ sử dụng ngày hiện tại.
luator 27/09/18

17

date -j -f "%Y-%m-%d" "2010-10-02" "+%s"


3

Tôi đã sử dụng phần sau trên Mac OSX.

currDate=`date +%Y%m%d`
epochDate=$(date -j -f "%Y%m%d" "${currDate}" "+%s")

2

Ngoài ra, bạn có thể cài đặt GNU date như sau:

  1. cài đặt Homebrew: https://brew.sh/
  2. brew install coreutils
  3. thêm vào bash_profile của bạn: alias date="/usr/local/bin/gdate"
  4. date +%s 1547838127

Các bình luận nói rằng Mac phải "khác biệt" chỉ đơn giản là tiết lộ người bình luận không biết gì về lịch sử của UNIX. macOS dựa trên BSD UNIX, cũ hơn Linux. Về cơ bản, Linux là một bản sao của các hệ thống UNIX khác và Linux đã quyết định "khác biệt" bằng cách sử dụng các công cụ GNU thay vì các công cụ BSD. Các công cụ GNU thân thiện với người dùng hơn, nhưng chúng thường không được tìm thấy trên bất kỳ hệ thống * BSD nào (chỉ như vậy).

Thực sự, nếu bạn dành phần lớn thời gian của mình cho Linux, nhưng có máy tính để bàn Mac, bạn có thể muốn làm cho máy Mac hoạt động như Linux. Không có ý nghĩa gì khi cố gắng ghi nhớ hai bộ tùy chọn khác nhau hoặc tập lệnh cho phiên bản BSD Bash của mac, trừ khi bạn đang viết một tiện ích mà bạn muốn chạy trên cả BSD và GNU / Linux shell.


0

date -j -f "%Y-%m-%d %H:%M:%S" "2020-04-07 00:00:00" "+%s"

Nó sẽ in giây động khi không có %H:%M:%S00:00:00.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.