我的世界java怎么变时间
全世界的时间,有一个统一的计算标准:
刚开始是格林尼治(格林威治)时间(Greenwich Mean Time)简称GMT,计算核心:地球自转一圈为一天,太阳直射时为正午十二点,但是根据历史记载,曾有过16分钟的大误差,使用时长长达将近130年
到了2012年1月的时候改为原子钟,原子钟利用铯原子的震动频率计算出来的时间,作为世界标准时间(UTC),铯原子每震动9192631770次=1秒(不用记忆,了解一下就行)
中国标准时间=世界标准时间+8小时
1.Data --- 时间类
是一个jdk写好的javaBean类,用来描述时间,精确到毫秒
利用空参构造的对象,默认表示系统当前时间
利用有参构造创建的对象,表示指定的时间
常用方法:
1.pubic Date() --- 创建Data对象,表示当前时间
2.public Date(long date) --- 创建Data对象,表示指定时间
3.public void setTime(long time) --- 设置/修改毫秒值
4.public void getTime --- 获取时间对象的毫秒值
public static void main(String[] args) { //需求1:打印时间原点开始一年之后的时间 extracted(); //需求2:定义任意两个Date对象,比较一下哪个时间在前,哪个时间在后 extracted1(); } private static void extracted1() { //需求2 Random random = new Random(); //1.创建两个data对象 Date d1 = new Date(Math.abs(random.nextInt())); Date d2 = new Date(Math.abs(random.nextInt())); //2.获取两个对象之后才能比较,date对象不能比较 long time1 = d1.getTime(); long time2 = d2.getTime(); //3.比较 if(time1>time2){ System.out.println("time1在后,time2在前"); }else if(time1<time2){ System.out.println("time1在前,time2在后"); }else { System.out.println("time1和time2时间相同"); } } private static void extracted() { //需求1 //1.创建一个对象,表示时间原点 Date d1 = new Date(0L); //2.获取d1的毫秒值 long time = d1.getTime(); //3.加上一年的毫秒值 time = time +1000L * 60 * 60 * 24 * 365; //4.把计算结果放回d1中 d1.setTime(time); //5.打印 System.out.println(d1); }2.SimpleDateFormat --- 格式化时间
Data类只能创建默认的时间格式
SimpleDateFormat类的作用:
1.格式化:把时间格式改变
2.解析:把字符串表示的时间变成Data对象
构造方法:
1.public SimpleDateFormat() --- 构造一个SimpleDateFormat,使用默认格式
2.public SimpleDateFormat(String Pattern) --- 构造一个SimpleDateFormat,使用指定格式
常用方法:
1.public final String format(Date date) --- 格式化(日期对象-->字符串)
2.public Date parse(String source) --- 解析(字符串-->日期对象)
接下来分别解释两个方法
(1)格式化
格式化的时间形式的常用模式对应关系:
y --- 年
M --- 月
d --- 日
H --- 时(0-23)
m --- 分
s --- 秒
(如果需要更为详细的格式,直接在API文档中搜索此类就行,这里不再过多赘述)
下面时代码演示
public static void main(String[] args) { Default(); Point(); } private static void Point() { //利用有参构造创建SimpleDateFormat()对象,指定格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E"); Date d = new Date(0L); String format = sdf.format(d); System.out.println(format); } private static void Default() { //利用空参构造创建SimpleDateFormat()对象,默认格式 SimpleDateFormat sdf = new SimpleDateFormat(); Date d = new Date(0L); String format = sdf.format(d); System.out.println(format); }(2)解析
public static void main(String[] args) throws ParseException { //1.定义一个字符串表示时间 String str = "2023-5-22 11:11:11"; //2.利用空参构造创建SimpleDateFormat对象,创建的代码格式要和字符串的格式一样 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //3.解析传入的字符串为默认时间日期格式 Date date = sdf.parse(str); System.out.println(date); //获取这个时间的毫秒值,有了毫秒值就可以进行比较,加减等操作 System.out.println(date.getTime()); }3.Calendar --- 日历
代表了系统当前时间的日历对象,可以单独修改、获取时间中的年、月、日
细节:它是一个抽象类
获取Calendar日历类对象的方法
public static Calendar getInstance() --- 获取当前时间的日历对象
Calender是一个抽象类,不能直接new,而是通过一个静态方法获取到子类对象
底层原理:
1.会根据系统的不同时区来获取不同的日历对象,默认表示是当前时间
2.把会时间中的纪元:年,月,日,时,分,秒,星期等等的都放到一个数组当中
细节:
1.月份:范围0~11,如果获取出来的是0,那么实际上是1月
2.星期:在老外的眼里,星期日是一周的第一天,1(星期天),2(星期一)
常用方法:
1.public final Date getTime() --- 获取日期对象
2.public final setTime(Date date) --- 给日历设置日期对象
public static void main(String[] args) { Calendar c = Calendar.getInstance(); //修改日历代表时间 Date d = new Date(0L); c.setTime(d); System.out.println(c); }
3.public long getTimeInMillis() --- 拿到时间毫秒值
4.public void setTimeInMillis(long millis) --- 给日历设置时间毫秒值
和以上操作差不多
5.public int get(int field) --- 取日历中的某个字段信息
public static void main(String[] args) { Calendar c = Calendar.getInstance(); Date d = new Date(0L); c.setTime(d); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH)+1; int date = c.get(Calendar.DATE); int dateOfWeek = c.get(Calendar.DAY_OF_WEEK); System.out.println(year+","+month+","+date+","+GetWeek(dateOfWeek)); } public static String GetWeek(int index){ String[] arr = {"","星期天","星期一","星期二","星期三","星期四","星期五","星期六"}; return arr[index]; }6.public void set(int field,int value) --- 修改日历的某个字段信息
public static void main(String[] args) { Calendar c = Calendar.getInstance(); Date d = new Date(0L); c.setTime(d); //这里将年份修改成2000年了 c.set(Calendar.YEAR,2000); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH)+1; int date = c.get(Calendar.DATE); int dateOfWeek = c.get(Calendar.DAY_OF_WEEK); System.out.println(year+","+month+","+date+","+GetWeek(dateOfWeek)); } public static String GetWeek(int index){ String[] arr = {"","星期天","星期一","星期二","星期三","星期四","星期五","星期六"}; return arr[index]; }
7.public void add(int field,int amount) --- 为某个字段增加/减少指定的值
public static void main(String[] args) { Calendar c = Calendar.getInstance(); Date d = new Date(0L); c.setTime(d); //这里将年份修改成2000年了 c.set(Calendar.YEAR,2000); //这里添加了一个月 c.add(Calendar.MONTH,1); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH)+1; int date = c.get(Calendar.DATE); int dateOfWeek = c.get(Calendar.DAY_OF_WEEK); System.out.println(year+","+month+","+date+","+GetWeek(dateOfWeek)); } public static String GetWeek(int index){ String[] arr = {"","星期天","星期一","星期二","星期三","星期四","星期五","星期六"}; return arr[index]; }注:如果添加的月份或者日期超过正常限定范围,那么就会加减一年或者月份