Java中日期相关的类

缪金谷 494 1

日期相关的类

Date

通常使用的是java.util包

一般可以通过无参数构造方法或者long类型的构造方法创建

import java.util.Date;
public class Test {
   public static void main (String[] args){
       long time = System.currentTimeMillis();//获取当前的时间戳(毫秒)
       //创建时间对象
       Date date1 = new Date();//默认为当前系统时间构建的对象
       Date date2 = new Date(1578290957036L);//使用long类型的时间戳来构建对象
       date2 = new Date(time);//使用时间戳来构建对象
       Date date3 = new Date(2020-1900,1-1,6);//构建一个2020年1月6号的时间对象,Date类中年份的参数应该是实际需要代表的年份减去1900,实际需要代表的月份减去1以后的值。
       //比较时间前后
       boolean x = date1.before(date2);//比较date1是否是在date2之前
       boolean y = date1.after(date2);//比较date1是否是在date2之后
       int z = date1.compareTo(date2);//按照顺序比较,-1调用在前参数在后,1相反
   }
}

DateFormate

所属的包为java.text,需要导包才能使用

此类是个抽象类,不能创建对象,使用子类SimpleDateFormat

在对象的格式中定义了以下图案字母(所有其他字符从'A''Z'和从'a''z'被保留):

LetterDate or Time ComponentPresentationExamples
GEra designatorTextAD
yYear1996; 96
Y周年Year2009; 09
M年中的月份 (context sensitive)MonthJuly; Jul; 07七月;7月;07
L年中的月份 (standalone form)MonthJuly; Jul; 07七月;7月;07
w年中的周数Number27
W月份中的周数Number2
D年中的天数Number189
d月份中的天数Number10
F月份中的星期Number2
E星期中的天数TextTuesday; Tue星期二;周二
u星期中对应的数字,(1=星期一,7=星期日)Number1
aam/pm 标记TextPM下午
H一天中的小时数(0-23)Number0
k一天中的小时数(1-24)Number24
Kam/pm 中的小时数(0-11)Number0
ham/pm 中的小时数(1-12)Number12
m小时中的分钟数Number30
s分钟中的秒数Number55
SMillisecondNumber978
z时区General time zonePacific Standard Time; PST; GMT-08:00
Z时区RFC 822 time zone-0800
XTime zoneISO 8601 time zone-08; -0800; -08:00

举例:

Date and Time PatternResult
"yyyy.MM.dd G 'at' HH:mm:ss z"2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy"Wed, Jul 4, '01
"h:mm a"12:08 PM
"hh 'o''clock' a, zzzz"12 o'clock PM, Pacific Daylight Time
"K:mm a, z"0:08 PM, PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa"02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z"Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ"010704120856-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"2001-07-04T12:08:56.235-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"2001-07-04T12:08:56.235-07:00
"YYYY-'W'ww-u"2001-W27-3

import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo {
   public static void main (String[] args){
       long time = System.currentTimeMillis();//获取当前的时间戳(毫秒)
       //创建时间对象
       Date date = new Date();//默认为当前系统时间构建的对象
       //格式化Date
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//创建格式化对象,格式化的样式为如:2020-01-06 14:23:50
       String v = sdf.format(date);//将时间格式化 2020-01-06 02:36:57
   }
}

注意,如果要显示英文时间日期的话,需要在参数后面加上Locale.ENGLISH,如:

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Demo {
   public static void main (String[] args){
       long time = System.currentTimeMillis();//获取当前的时间戳(毫秒)
       //创建时间对象
       Date date = new Date();//默认为当前系统时间构建的对象
       //格式化Date
       SimpleDateFormat sdf = new SimpleDateFormat("MMM-yyyy", Locale.ENGLISH);//创建英文格式的日期
       String v = sdf.format(date);//将时间格式化 Jan-2020
   }
}

Calendar

所属的是java.util包,需要导包

import java.util.Calendar;
import java.util.Date;

public class Demo {
   public static void main (String[] args){
       //创建对象
       Calendar time = Calendar.getInstance();//系统当前时间的calendar对象
       //常用方法
       time.before(new Date());//比较time是否是在date之前
       time.after(new Date());//比较time是否是在date之后
       time.setTime(new Date());//使用给定的Date设置此日历的时间
       time.getTime();//返回一个表示此日历时间的Date
       time.getTimeInMillis();//返回一个long类型的毫秒值
       time.getTimeZone();//返回一个TimeZone类型的时区
       //获取操作设置部分属性
       /*
       YEAR 年
       MONTH 月
       DATE  日
       HOUR_OF_DAY 时
       MINUTE 分
       SECOND/MILLISECOND 秒/毫秒
       DAY_OF_WEEK 周几
       DAY_OF_WEEK_IN_MONTH    某月中第几周
       WEEK_OF_YEAR    一年的第多少周
       WEEK_OF_MONTH 日历式的第几周
       DAY_OF_MONTH    和DATE一样
       DAY_OF_YEAR 一年的第多少天
       */
       // 其日历字段已由当前日期和时间初始化:
       Calendar rightNow = Calendar.getInstance(); // 子类对象
       // 获取年
       int year = rightNow.get(Calendar.YEAR);
       // 获取月
       int month = rightNow.get(Calendar.MONTH);
       // 获取日
       int date = rightNow.get(Calendar.DATE);
       //获取几点
       int hour=rightNow.get(Calendar.HOUR_OF_DAY);
       //获取上午下午
       int moa=rightNow.get(Calendar.AM_PM);
       if(moa==1){
           System.out.println("下午");
       }else{
           System.out.println("上午");
       }
       System.out.println(year + "年" + (month + 1) + "月" + date + "日"+hour+"时");//month是从0开始的,而月份是从1开始的,所以month需要加一。
       //设置年为2019
       rightNow.set(Calendar.YEAR,2019)
   }
}

TimeZone

获取时区的类

所属的是java.util包,需要导包

可以通过calendar.getTimeZone()或者TimeZone.getDefault()来获取对象

import java.util.Calendar;
import java.util.TimeZone;

public class Demo {
   public static void main (String[] args){
       Calendar calendar = Calendar.getInstance();//系统当前时间的calendar对象
       TimeZone tz = calendar.getTimeZone();
       //获取当前时区的id
       System.out.println(tz.getID());//Asia/Shanghai
       //描述这个时区的时间
       System.out.println(tz.getDisplayName());//中国标准时间
   }
}




上一篇Java部分常用的数学相关的工具类

下一篇当前文章已是最新一篇了

发表评论 (已有1条评论)

评论列表

2020-08-08 09:15:57

收藏。。