2019/05/10

[Android] Get Current Time

從系統直接抓時間資訊,包含秒、分、時、日期、年份...等


抓系統時間的寫法:
  1. Calendar now = Calendar.getInstance();

設定顯示的格式
  1. DateFormat timeFormat = new SimpleDateFormat("H:mm a");
  2. String time = timeFormat .format(now.getTime());
  3. DateFormat dateFormat = new SimpleDateFormat("EEE, MMM d, yyyy");
  4. String date = dateFormat.format(now.getTime());

如果要更改時間 (ex.加30分鐘)
  1. now.add(Calendar.MINUTE, 31);
  2. String time = timeFormat .format(now.getTime());


再利用計時器每秒更新時間:
  1. private Runnable timeTask = new Runnable() {
  2. @Override
  3. public void run() {
  4. now = Calendar.getInstance();
  5. timeStr = timeFormat.format(now.getTime());
  6. dateStr = dateFormat.format(now.getTime());
  7. tv_currentTime.setText(timeStr);
  8. tv_currentDate.setText(dateStr);
  9.  
  10. timeHandler.postDelayed(timeTask, 1000);
  11. }
  12. };


完整程式碼 MainActivity.java:
  1. public class MainActivity extends AppCompatActivity {
  2. private String timeStr, dateStr;
  3. private TextView tv_currentTime, tv_currentDate;
  4. private Calendar now;
  5. private DateFormat timeFormat, dateFormat;
  6. private Handler timeHandler;
  7.  
  8. @Override
  9. protected void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.activity_main);
  12.  
  13. tv_currentTime = findViewById(R.id.id_tv_CurrentTime);
  14. tv_currentDate = findViewById(R.id.id_tv_CurrentDate);
  15.  
  16. now = Calendar.getInstance();
  17. timeFormat = new SimpleDateFormat("h:mm a");
  18. dateFormat = new SimpleDateFormat("EEE, MMM d, yyyy");
  19. timeStr = timeFormat.format(now.getTime());
  20. dateStr = dateFormat.format(now.getTime());
  21. tv_currentTime.setText(timeStr);
  22. tv_currentDate.setText(dateStr);
  23.  
  24. timeHandler = new Handler();
  25. timeHandler.postDelayed(timeTask, 1000);
  26. }
  27.  
  28. protected void onDestroy() {
  29. super.onDestroy();
  30. timeHandler.removeCallbacks(timeTask);
  31. }
  32.  
  33. private Runnable timeTask = new Runnable() {
  34. @Override
  35. public void run() {
  36. now = Calendar.getInstance();
  37. timeStr = timeFormat.format(now.getTime());
  38. dateStr = dateFormat.format(now.getTime());
  39. tv_currentTime.setText(timeStr);
  40. tv_currentDate.setText(dateStr);
  41. timeHandler.postDelayed(timeTask, 500);
  42. }
  43. };
  44. }
END

沒有留言:

張貼留言