[英]Best way to store, retrieve, and compare dates in Java
我來自PHP背景。 我很長一段時間以來一直是PHP開發人員。 我想進入Android App開發。 我創建了一個應用程序,但我不覺得我對時間和日期函數有很強的把握,特別是在存儲在數據庫中時。 我的一個主要問題是如何從數據庫(SQLite)存儲和檢索日期並比較它們。
我在PHP中這樣做的方式很簡單; 我使用time()
函數,它為當前時間創建一個unix時間戳,然后我將它作為整數存儲在MySQL數據庫中。 由於MySQL的日期函數,以及通過PHP作為整數輕松檢索和比較日期的能力,這使事情變得非常簡單和容易。
基本上,我想知道Java的最佳解決方案是什么。 在為我未來的Android應用創建,存儲,檢索和比較日期時,您建議我做什么?
這是我使用的PHP代碼的一個例子,也許這會讓別人更好地了解我習慣和我正在尋找的東西:
Database structure:
`id` (int) auto increment
`username` (varchar)
`the_date` (int)
<?php
$username = 'scarhand77';
$the_date = time();
// insert into database
mysql_query("insert into `stack_overflow` (`username`, `the_date`) values ('$username', '$the_date')");
// retrieve from database
$user_date = mysql_result(mysql_query("select `the_date` from `stack_overflow` where `username`='$username'"), 0);
// compare $user_date, see if its older than right now
if ($user_date < time())
echo 'it is older';
else
echo 'it is not older';
?>
任何幫助將不勝感激。
只需使用原始的長。 從System.currentTimeMillis();
返回的同一個System.currentTimeMillis();
(目前的時間)。 它是自1970年以來的毫秒數。它與unix時間基本相同,但帶有有符號的64位值(java長),以毫秒而不是秒為單位。
java.util.Date
對象只是一個long
的包裝器,所以大多數都是無意義的,但如果你也喜歡使用Date對象也很容易。 不要與java.sql.Date
混淆
然后,您可以比較示例中的時間
long time1 = System.currentTimeMillis();
long time2 = ...;
if (time2 < time1) {
如果您想要,您甚至無需創建Date對象即可獲得unix時間戳:
long unixTime = System.currentTimeMillis() / 1000L;
然后你可以像以前一樣簡單地將它寫入MySQL。
如果您在從數據庫中檢索它們后對時間進行操作,則可能需要查看Joda Time。 它具有大量有用的功能,而標准的Java庫在該領域有點缺乏。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.