例如,給定日期爲'2016-12-31',n爲2,預期產出爲'2016-12-29'。
我調查date
命令,並從當前日期起n天前是很容易:
date -d "2 days ago" +%Y-%m-%d
n天前從命令行給定日期起
3
A
回答
4
只是提到你要兩天從抽取日期:
$ date -d "2016-12-31 2 days ago" +%Y-%m-%d
2016-12-29
或者更好一點grammatically-明智的:
$ date -d "2016-12-31 -2 days" +%Y-%m-%d
2016-12-29
0
如果你沒有GNU日期,也許你有BSD date而不是。在這種情況下,你可以這樣做:請注意,這不是POSIX,也不是GNU。
這告訴BSD日期不要更改時鐘(-j
)並將輸入作爲UNIX time(1970/01/01 00:00:00之後的秒,UTC,-f %s
)。提供的時間是當前時間的數學替換($(date +%s)
,使用與輸出相同的格式)減去一天(86400)乘以二的秒數。
我已經在過去,編寫的代碼,以查找GNU和故障轉移到BSD:
# Usage: _epoch2datefmt UNIX_TIME [+FORMAT]
if date -d @1484850179 +%s >/dev/null 2>&1
then _epoch2datefmt() { date -d @"[email protected]"; } # GNU
else _epoch2datefmt() { date -jf %s "[email protected]"; } # BSD
fi
對於這個問題,它可以讓你寫:
_epoch2datefmt $(($(date +%s) - 86400 * 2))
這是相對日期有點不切實際;您最好調整助手函數,以便GNU版本不需要額外的命令。
相關問題
- 1. javascript - 自給定日期起的當前日期x天?
- 2. 函數返回給定日前n天
- 3. Linq獲得給定日期前7天
- 4. 如何減去天數n從給定日期在python
- 5. 的emacs:顯示日期像「n天前」
- 6. XQuery - 如何在給定日期的日期前90天獲取?
- 7. 從給定的日期找到一天
- 8. Dos命令xcopy具有當前日期 - 90天變量
- 9. 從給定日期起連續獲得'N'個連續工作日
- 10. 如何確定Java中給定日期之前一天的日期?
- 11. 在選定日期和今天日期之前禁用日期
- 12. 得到的sql結果的時間戳日期是從今天起的n天
- 13. 如何設置crontab從當前日期開始每n天運行一次?
- 14. 從python當前日期獲取7天前的日期
- 15. 如何從給定的日期生成N個星期 - java
- 16. 計算從特定日期起12個月前的日期
- 17. 月前從bash或perl給定日期的日期開始
- 18. 是否有從當前行跳轉第N行的命令?
- 19. 如何獲得給定日期和之前記錄日期之間的天數?
- 20. 批處理文件如果修改日期=昨天日期(運行命令)
- 21. 獲取給定日期的週數(周從星期天開始)
- 22. 給定日期前7天發送通知/電子郵件
- 23. Grails驗證日期從今天起13年前
- 24. 加入JavaScript天到給定日期
- 25. 給定日期的C++天數
- 26. 從變化日期起的5天
- 27. ASP.NET從當前日期起儒略日
- 28. NSNotification從目標日期前2天
- 29. 如何之前,從昨天日期
- 30. 如何確定c#中給定日期時間的第n天類型?
我將標記從[tag:unix]更改爲[tag:linux],因爲此表達式的'-d'行爲是[GNU擴展名](https://www.gnu.org/software/coreutils/manual /html_node/Options-for-date.html),在[POSIX](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/date.html),[BSD](http:// www。 unix.com/man-page/FreeBSD/1/date/)等。 – pilcrow
儘管@ pilcrow的評論,我已經提供了一個BSD的答案以及解決GNU或BSD的方法。另請注意,GNU不需要Linux內核,也不一定意味着Linux發行版。我添加了「gnu」標籤並返回了「unix」標籤,同時保留了「linux」。 –