我有像[%Y-%m-%d %H:%M:%S]
和時間戳[2009/05/11 07:30:00]
時間格式。我需要的是如何比較這兩個值。可能的是,時間戳與時間格式不相似,例如[%Y-%m%d %H:%M]
。這是錯誤的。 有些想法?如何比較時間格式和時間戳?
1
A
回答
0
要verify一個日期字符串是在一個特定的格式,可以強制日期成你想要的格式和驗證字符串是一樣的,你開始:
$ format='%Y/%m/%d %H:%M:%S'
$ invalid_date='2009/05/11 07:30'
$ [ "$(date --date="$invalid_date" +"$format")" = "$invalid_date" ]
$ echo "$?"
1
$ valid_date='2009/05/11 07:30:00'
$ [ "$(date --date="$valid_date" +"$format")" = "$valid_date" ]
$ echo "$?"
0
這將僅適用於日期字符串這是date
兼容的(你不能指定輸入直接date
格式化)工作。
2
如果日期不一定相同的格式,一個簡單的辦法就是將它們轉換爲Unix的時間戳:
$ date --date="2009/05/11 07:30:00" +%s
1242023400
$ date --date="2009/05/11 07:30" +%s
1242023400
這會給你一個整數值,你可以很容易地比較使用:
if [ "$(date --date="$my_date" +%s)" -gt "$(date --date="$my_other_date" +%s)" ]
date
瞭解許多常見的日期格式,而不必先輸入輸入。
0
如果日期是相同的格式,並且該格式是4位數的年份,然後月,日,時,分,秒,但有些是在結束截斷,那麼您可以在後綴填寫和比較這些日期爲字符串:
$ rpad_date() {
case ${#1} in
4)
format='%s/01/01 00:00:00'
;;
7)
format='%s/01 00:00:00'
;;
10)
format='%s 00:00:00'
;;
13)
format='%s:00:00'
;;
16)
format='%s:00'
;;
19)
format='%s'
;;
*)
echo "Unknown format: $1" >&2
return 1
esac
printf "$format" "$1"
}
$ rpad_date "2004"
2004/01/01 00:00:00
相關問題
- 1. 如何比較時間戳
- 2. 比較時間戳和實際時間
- 3. 時間戳比較
- 4. 比較時間戳
- 5. 比較時間戳
- 6. 比較PHP時間戳(int)和java時間戳(long)
- 7. 比較SQL時間戳
- 8. Javascript比較時間戳
- 9. PHP比較UNIX時間戳
- 10. 比較兩個時間戳
- 11. PHP時間戳比較
- 12. Java時間戳比較
- 13. 比較時間戳值
- 14. DB2時間戳比較
- 15. PHP比較時間戳
- 16. 比較文件時間戳
- 17. 比較mysql時間戳
- 18. 如何比較兩個時間戳erlang?
- 19. 螞蟻:如何比較時間戳?
- 20. 如何比較2時間戳
- 21. 如何比較Ruby中的時間戳
- 22. php日期和mysql時間戳比較
- 23. 比較時間戳和日期在php
- 24. 如何比較不同時區之間的時間戳?
- 25. 如何將GDKEvent時間戳與當前時間進行比較?
- 26. 格式時間戳
- 27. 比較12小時的格式時間
- 28. 比較12小時格式的時間
- 29. 時間戳比較刪除當MySQL時間戳>20分鐘
- 30. 時間戳在時間戳範圍內進行比較?
因爲格式是'這是無效-'和日期有'/'年之間,月,日。修好後就可以了。謝謝@ l0b0 – Stepan
@ user3531485謝謝,修復它。 – l0b0