一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Calendar 日歷類的時間操作

 印度阿三17 2018-09-28

我們經(jīng)常會涉及到對時間的處理,例如登陸網(wǎng)站,我們會看到網(wǎng)站首頁顯示XXX,歡迎您!今天是XXXX年。。。。某些網(wǎng)站會記錄下用戶登陸的時間,比如銀行的一些網(wǎng)站,對于這些經(jīng)常需要處理的問題,Java中提供了Calendar這個專門用于對日期進行操作的類,那么這個類有什么特殊的地方呢,首先我們來看Calendar的聲明

public abstract class Calendar extends Objectimplements Serializable, Cloneable, Comparable<Calendar>

該類被abstract所修飾,說明不能通過new的方式來獲得實例,對此,Calendar提供了一個類方法getInstance,以獲得此類型的一個通用的對象,getInstance方法返回一個Calendar對象(該對象為Calendar的子類對象),其日歷字段已由當前日期和時間初始化:

Calendar rightNow = Calendar.getInstance();

為什么說返回的是Calendar的子類對象呢,因為每個國家地區(qū)都有自己的一套日歷算法,比如西方國家的第一個星期大部分為星期日,而中國則為星期一,我們來看看getInstance方法獲取實例的源碼

/**
 * Gets a calendar using the default time zone and locale. The
 * <code>Calendar</code> returned is based on the current time
 * in the default time zone with the default locale.
 *
 * @return a Calendar.
 */
public static Calendar getInstance()
{
    Calendar cal = createCalendar(TimeZone.getDefaultRef(), Locale.getDefault(Locale.Category.FORMAT));
    cal.sharedZone = true;
    return cal;
}
View Code

?

?

?

注意事項:

Calendar 的 month 從 0 開始,也就是全年 12 個月由 0 ~ 11 進行表示。

而 Calendar.DAY_OF_WEEK 定義值如下,每周從 SUNDAY 開始,從 1 ~ 7:

Calendar.SUNDAY = 1
Calendar.MONDAY = 2
Calendar.TUESDAY = 3
Calendar.WEDNESDAY = 4
Calendar.THURSDAY = 5
Calendar.FRIDAY = 6
Calendar.SATURDAY = 7

Java Calendar 演示代碼如下:

package demo;
 
import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Calendar;
 
public class Test
{
  public Test()
  {
  }
 
  public static void main(String[] args)
  {
    // 字符串轉(zhuǎn)換日期格式
    // DateFormat fmtDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    // 接收傳入?yún)?shù)
    // String strDate = args[1];
    // 得到日期格式對象
    // Date date = fmtDateTime.parse(strDate);
 
    // 完整顯示今天日期時間
    String str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(new Date());
    System.out.println(str);
 
    // 創(chuàng)建 Calendar 對象
    Calendar calendar = Calendar.getInstance();
 
    try
    {
      // 對 calendar 設(shè)置時間的方法
      // 設(shè)置傳入的時間格式
      SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-M-d H:m:s");
      // 指定一個日期
      Date date = dateFormat.parse("2013-6-1 13:24:16");
      // 對 calendar 設(shè)置為 date 所定的日期
      calendar.setTime(date);
 
      // 按特定格式顯示剛設(shè)置的時間
      str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(calendar.getTime());
      System.out.println(str);
    }
    catch (ParseException e)
    {
      e.printStackTrace();
    }
 
    // 或者另一種設(shè)置 calendar 方式
    // 分別爲 year, month, date, hourOfDay, minute, second
    calendar = Calendar.getInstance();
    calendar.set(2013, 1, 2, 17, 35, 44);
    str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(calendar.getTime());
    System.out.println(str);
 
    // Calendar 取得當前時間的方法
    // 初始化 (重置) Calendar 對象
    calendar = Calendar.getInstance();
    // 或者用 Date 來初始化 Calendar 對象
    calendar.setTime(new Date());
 
    // setTime 類似上面一行
    // Date date = new Date();
    // calendar.setTime(date);
 
    str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(calendar.getTime());
    System.out.println(str);
 
    // 顯示年份
    int year = calendar.get(Calendar.YEAR);
    System.out.println("year is = "   String.valueOf(year));
 
    // 顯示月份 (從0開始, 實際顯示要加一)
    int month = calendar.get(Calendar.MONTH);
    System.out.println("nth is = "   (month   1));
 
    // 本周幾
    int week = calendar.get(Calendar.DAY_OF_WEEK);
    System.out.println("week is = "   week);
 
    // 今年的第 N 天
    int DAY_OF_YEAR = calendar.get(Calendar.DAY_OF_YEAR);
    System.out.println("DAY_OF_YEAR is = "   DAY_OF_YEAR);
 
    // 本月第 N 天
    int DAY_OF_MONTH = calendar.get(Calendar.DAY_OF_MONTH);
    System.out.println("DAY_OF_MONTH = "   String.valueOf(DAY_OF_MONTH));
 
    // 3小時以后
    calendar.add(Calendar.HOUR_OF_DAY, 3);
    int HOUR_OF_DAY = calendar.get(Calendar.HOUR_OF_DAY);
    System.out.println("HOUR_OF_DAY   3 = "   HOUR_OF_DAY);
 
    // 當前分鐘數(shù)
    int MINUTE = calendar.get(Calendar.MINUTE);
    System.out.println("MINUTE = "   MINUTE);
 
    // 15 分鐘以后
    calendar.add(Calendar.MINUTE, 15);
    MINUTE = calendar.get(Calendar.MINUTE);
    System.out.println("MINUTE   15 = "   MINUTE);
 
    // 30分鐘前
    calendar.add(Calendar.MINUTE, -30);
    MINUTE = calendar.get(Calendar.MINUTE);
    System.out.println("MINUTE - 30 = "   MINUTE);
 
    // 格式化顯示
    str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());
    System.out.println(str);
 
    // 重置 Calendar 顯示當前時間
    calendar.setTime(new Date());
    str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());
    System.out.println(str);
 
    // 創(chuàng)建一個 Calendar 用于比較時間
    Calendar calendarNew = Calendar.getInstance();
 
    // 設(shè)定為 5 小時以前,后者大,顯示 -1
    calendarNew.add(Calendar.HOUR, -5);
    System.out.println("時間比較:"   calendarNew.compareTo(calendar));
 
    // 設(shè)定7小時以后,前者大,顯示 1
    calendarNew.add(Calendar.HOUR,  7);
    System.out.println("時間比較:"   calendarNew.compareTo(calendar));
 
    // 退回 2 小時,時間相同,顯示 0
    calendarNew.add(Calendar.HOUR, -2);
    System.out.println("時間比較:"   calendarNew.compareTo(calendar));
  }
}

?

運行結(jié)果

2013-06-07 23:27:34:195
2013-06-01 13:24:16:000
2013-02-02 17:35:44:197
2013-06-07 23:27:34:197
year is = 2013
nth is = 6
week is = 6
DAY_OF_YEAR is = 158
DAY_OF_MONTH = 7
HOUR_OF_DAY   3 = 2
MINUTE = 27
MINUTE   15 = 42
MINUTE - 30 = 12
2013-06-08 02:12:34:197
2013-06-07 23:27:34:199
時間比較:-1
時間比較:1
時間比較:0

要計算時間差,可用 Calendar.getTimeInMillis() 取得兩個時間的微秒級的時間差,再加以換算即可,比如獲得相差天數(shù),代碼如下:

    // 得微秒級時間差
    long val = calendarEnd.getTimeInMillis() - calendarBegin.getTimeInMillis();
    // 換算后得到天數(shù)
    long day = val / (1000 * 60 * 60 * 24);

其他與 date 相關(guān)的類型轉(zhuǎn)換代碼如下。

Timestamp 類型轉(zhuǎn)換為 Date 類型:

Timestamp stamp = new Timestamp(System.currentTimeMillis());
Date date = new Date(stamp.getTime());
System.out.println(date);

Timestamp 類型轉(zhuǎn)換為 Calendar 類型:

// 獲取 Timestamp 類型時間
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
 
// 轉(zhuǎn)換為 Calendar 類型,SUN 也推薦用 Calendar 處理時間信息
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timestamp.getTime());

Date 類型轉(zhuǎn)換為?Calendar 類型

// Date 向 Calendar 賦值
calendar.setTime(date);

Calendar 類型轉(zhuǎn)換為 Timestamp 類型:

// 創(chuàng)建 Calendar 對象,也同時獲取了當前時間
Calendar calendar = Calendar.getInstance();
 
// 轉(zhuǎn)換為 Timestamp 類型對象
Timestamp timestamp = new Timestamp(calendar.getTimeInMillis());
System.out.println(timestamp);

Calendar 類型轉(zhuǎn)換為 Date 類型:

// Calendar 對象類型轉(zhuǎn)換為 Date 對象類型
Calendar calendar = Calendar.getInstance();
java.util.Date date = calendar.getTime();
System.out.println(date);

?

?

?

?

https://blog.csdn.net/joyous/article/details/9630893

https://www.cnblogs.com/huangminwen/p/6041168.html

?

來源:http://www./content-4-27451.html

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    免费播放一区二区三区四区 | 欧美日韩一区二区综合| 欧美日韩精品视频在线| 亚洲免费黄色高清在线观看| 精品al亚洲麻豆一区| 国产一区二区精品高清免费| 色涩一区二区三区四区| 91亚洲人人在字幕国产| 欧美精品女同一区二区| 国产一区二区三区四区免费| 亚洲欧美日韩中文字幕二欧美| 日韩一区二区三区四区乱码视频 | 国产欧美日产中文一区| 欧美黑人暴力猛交精品| 欧美区一区二在线播放| 不卡中文字幕在线免费看| 91人妻久久精品一区二区三区| 亚洲av成人一区二区三区在线| 婷婷色网视频在线播放| 亚洲黑人精品一区二区欧美| 亚洲成人黄色一级大片| 日本中文在线不卡视频| 精品一区二区三区三级视频| 熟女一区二区三区国产| 九九热最新视频免费观看| 日韩女优精品一区二区三区| 日韩高清毛片免费观看| 日韩精品福利在线观看| 欧美色欧美亚洲日在线| 少妇毛片一区二区三区| 男人和女人黄 色大片| 亚洲色图欧美另类人妻| 在线日韩中文字幕一区| 富婆又大又白又丰满又紧又硬| 视频一区日韩经典中文字幕| 日本少妇三级三级三级| 欧美偷拍一区二区三区四区| 中文字幕人妻av不卡| 在线观看那种视频你懂的| 国产原创激情一区二区三区| 千仞雪下面好爽好紧好湿全文|