java处理年、月、周次以及起至日期大全
calendar用法java
calendar用法java在Java中,可以使用java.util.Calendar类来处理日历和日期时间相关的操作。
Calendar类是一个抽象类,提供了许多用于处理日期和时间的方法。
下面是Calendar类的一些常用方法和用法:1.获取Calendar实例:可以通过调用`Calendar.getInstance()`方法来获取一个Calendar实例,该实例会自动初始化为当前的日期和时间。
2.设置日期和时间:可以使用`set()`方法来设置特定的日期和时间,例如:`calendar.set(Calendar.YEAR, 2022)`来设置年份为2022。
3.获取日期和时间:可以使用`get()`方法来获取指定日期和时间的值,例如:`int year = calendar.get(Calendar.YEAR)`来获取年份值。
4.对日期和时间进行加减操作:可以使用`add()`方法来对日期和时间进行加减操作,例如:`calendar.add(Calendar.DAY_OF_MONTH, 1)`表示将日期增加1天。
5.获取一周的第几天:可以使用`get()`方法和`Calendar.DAY_OF_WEEK`参数来获取一周中的第几天,星期日为1,星期一为2,以此类推。
6.格式化日期和时间:可以使用`SimpleDateFormat`类或其他日期时间格式化类来格式化日期和时间。
拓展内容:除了以上介绍的常用方法,Calendar类还提供了一些其他功能,例如:-判断是否为闰年:可以使用`isLeapYear()`方法来判断指定年份是否为闰年。
-比较日期:可以使用`compareTo()`方法来比较两个日期的先后关系。
-判断日期和时间的合法性:可以使用`isValid()`方法来判断指定的日期和时间是否合法。
此外,Java 8及更高版本中,还引入了新的日期和时间API,即java.time包下的相关类,如`LocalDate`、`LocalDateTime`和`ZonedDateTime`等,提供了更多便捷、灵活和线程安全的日期和时间处理功能。
Java取日期的所有时间点可根据年月日
package com.util;import java.text.DateFormat;import java.text.ParseException;import java.text.ParsePosition;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;public class TimeUtil {//用来全局控制上一周,本周,下一周的周数变化private int weeks = 0;private int MaxDate;//一月最大天数private int MaxYear;//一年最大天数/*** @param args*/public static void main(String[] args) {TimeUtil tt = new TimeUtil();// System.out.println("获取当天日期:"+tt.getNowTime("yyyy-MM-dd"));// System.out.println("获取本周一日期:"+tt.getMondayOFWeek());// System.out.println("获取本周日的日期~:"+tt.getCurrentWeekday());// System.out.println("获取上周一日期:"+tt.getPreviousWeekday());// System.out.println("获取上周日日期:"+tt.getPreviousWeekSunday());// System.out.println("获取下周一日期:"+tt.getNextMonday());// System.out.println("获取下周日日期:"+tt.getNextSunday());// System.out.println("获得相应周的周六的日期:"+tt.getNowTime("yyyy-MM-dd"));// System.out.println("获取本月第一天日期:"+tt.getFirstDayOfMonth());// System.out.println("获取本月最后一天日期:"+tt.getDefaultDay());// System.out.println("获取上月第一天日期:"+tt.getPreviousMonthFirst()); // System.out.println("获取上月最后一天的日期:"+tt.getPreviousMonthEnd());// System.out.println("获取下月第一天日期:"+tt.getNextMonthFirst());// System.out.println("获取下月最后一天日期:"+tt.getNextMonthEnd());// System.out.println("获取本年的第一天日期:"+tt.getCurrentYearFirst()); DateFormat fmt =new SimpleDateFormat("yyyy-MM-dd");Date date = null;try {date = fmt.parse("2008-02-21");} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("获取某年最后一天日期:"+tt.getCurrentYearEnd(date)); System.out.println("获取某年的去年的第一天日期:"+tt.getPreviousYearFirst(date));System.out.println("获取某年去年的最后一天日期:"+tt.getPreviousYearEnd(date));System.out.println("获取某年的第一天日期:"+tt.getCurrentYearfirst(date));// System.out.println("获取明年第一天日期:"+tt.getNextYearFirst());// System.out.println("获取明年最后一天日期:"+tt.getNextYearEnd());// System.out.println("获取本季度第一天到最后一天:"+tt.getThisSeasonTime(11));// System.out.println("获取两个日期之间间隔天数2008-12-1~2008-9.29:"+TimeUtil.getTwoDay("2008-12-1","2008-9-29"));System.out.println("ceshi "+tt.getLastDayOfMonths(date));System.out.println("cessss "+ tt.getFirstDayOfMonth(date));System.out.println("ceshi last year day "+tt.getLastYearFirstDayOfMonth(date));System.out.println("ceshi last year day "+tt.getLastYearLastDayOfMonths(date));System.out.println(tt.updateLastDate(date));}/*** 得到二个日期间的间隔天数*/public static String getTwoDay(String sj1, String sj2) {SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");long day = 0;try {java.util.Date date = myFormatter.parse(sj1);java.util.Date mydate = myFormatter.parse(sj2);day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);} catch (Exception e) {return "";}return day + "";}/*** 根据一个日期,返回是星期几的字符串** @param sdate* @return*/public static String getWeek(String sdate) {// 再转换为时间Date date = TimeUtil.strToDate(sdate);Calendar c = Calendar.getInstance();c.setTime(date);// int hour=c.get(Calendar.DAY_OF_WEEK);// hour中存的就是星期几了,其范围 1~7// 1=星期日 7=星期六,其他类推return new SimpleDateFormat("EEEE").format(c.getTime());}/*** 将短时间格式字符串转换为时间 yyyy-MM-dd** @param strDate* @return*/public static Date strToDate(String strDate) {SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); ParsePosition pos = new ParsePosition(0);Date strtodate = formatter.parse(strDate, pos);return strtodate;}/*** 两个时间之间的天数** @param date1* @param date2* @return*/public static long getDays(String date1, String date2) {if (date1 == null || date1.equals(""))return 0;if (date2 == null || date2.equals(""))return 0;// 转换为标准时间SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date = null;java.util.Date mydate = null;try {date = myFormatter.parse(date1);mydate = myFormatter.parse(date2);} catch (Exception e) {}long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000); return day;}// 计算当月最后一天,返回字符串public String getDefaultDay(){String str = "";SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");Calendar lastDate = Calendar.getInstance();lastDate.set(Calendar.DATE,1);//设为当前月的1号lastDate.add(Calendar.MONTH,1);//加一个月,变为下月的1号lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天str=sdf.format(lastDate.getTime());return str;}// 上月第一天public String getPreviousMonthFirst(){String str = "";SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");Calendar lastDate = Calendar.getInstance();lastDate.set(Calendar.DATE,1);//设为当前月的1号lastDate.add(Calendar.MONTH,-1);//减一个月,变为下月的1号//lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天str=sdf.format(lastDate.getTime());return str;}//获取当月第一天public String getFirstDayOfMonth(){String str = "";SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");Calendar lastDate = Calendar.getInstance();lastDate.set(Calendar.DATE,1);//设为当前月的1号str=sdf.format(lastDate.getTime());return str;}// 获得本周星期日的日期public String getCurrentWeekday() {weeks = 0;int mondayPlus = this.getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus+6);Date monday = currentDate.getTime();DateFormat df = DateFormat.getDateInstance();String preMonday = df.format(monday);return preMonday;}//获取当天时间public String getNowTime(String dateformat){Date now = new Date();SimpleDateFormat dateFormat = new SimpleDateFormat(dateformat);//可以方便地修改日期格式String hehe = dateFormat.format(now);return hehe;}// 获得当前日期与本周日相差的天数private int getMondayPlus() {Calendar cd = Calendar.getInstance();// 获得今天是一周的第几天,星期日是第一天,星期二是第二天......int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK)-1; //因为按中国礼拜一作为第一天所以这里减1if (dayOfWeek == 1) {return 0;} else {return 1 - dayOfWeek;}}//获得本周一的日期public String getMondayOFWeek(){weeks = 0;int mondayPlus = this.getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus);Date monday = currentDate.getTime();DateFormat df = DateFormat.getDateInstance();String preMonday = df.format(monday);return preMonday;}//获得相应周的周六的日期public String getSaturday() {int mondayPlus = this.getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks + 6); Date monday = currentDate.getTime();DateFormat df = DateFormat.getDateInstance();String preMonday = df.format(monday);return preMonday;}// 获得上周星期日的日期public String getPreviousWeekSunday() {weeks=0;weeks--;int mondayPlus = this.getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus+weeks);Date monday = currentDate.getTime();DateFormat df = DateFormat.getDateInstance();String preMonday = df.format(monday);return preMonday;}// 获得上周星期一的日期public String getPreviousWeekday() {weeks--;int mondayPlus = this.getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);Date monday = currentDate.getTime();DateFormat df = DateFormat.getDateInstance();String preMonday = df.format(monday);return preMonday;}// 获得下周星期一的日期public String getNextMonday() {weeks++;int mondayPlus = this.getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar(); currentDate.add(GregorianCalendar.DATE, mondayPlus + 7); Date monday = currentDate.getTime();DateFormat df = DateFormat.getDateInstance();String preMonday = df.format(monday);return preMonday;}// 获得下周星期日的日期public String getNextSunday() {int mondayPlus = this.getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar(); currentDate.add(GregorianCalendar.DATE, mondayPlus + 7+6); Date monday = currentDate.getTime();DateFormat df = DateFormat.getDateInstance();String preMonday = df.format(monday);return preMonday;}private int getMonthPlus(){Calendar cd = Calendar.getInstance();int monthOfNumber = cd.get(Calendar.DAY_OF_MONTH);cd.set(Calendar.DATE, 1);//把日期设置为当月第一天cd.roll(Calendar.DATE, -1);//日期回滚一天,也就是最后一天MaxDate=cd.get(Calendar.DATE);if(monthOfNumber == 1){return -MaxDate;}else{return 1-monthOfNumber;}}//获得上月最后一天的日期public String getPreviousMonthEnd(){String str = "";SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");Calendar lastDate = Calendar.getInstance();lastDate.add(Calendar.MONTH,-1);//减一个月lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一天lastDate.roll(Calendar.DATE, -1);//日期回滚一天,也就是本月最后一天 str=sdf.format(lastDate.getTime());return str;}//获得下个月第一天的日期public String getNextMonthFirst(){String str = "";SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");Calendar lastDate = Calendar.getInstance();lastDate.add(Calendar.MONTH,1);//减一个月lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一天str=sdf.format(lastDate.getTime());return str;}//获得下个月最后一天的日期public String getNextMonthEnd(){String str = "";SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");Calendar lastDate = Calendar.getInstance();lastDate.add(Calendar.MONTH,1);//加一个月lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一天lastDate.roll(Calendar.DATE, -1);//日期回滚一天,也就是本月最后一天 str=sdf.format(lastDate.getTime());return str;}//获得明年最后一天的日期public String getNextYearEnd(){String str = "";SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); Calendar lastDate = Calendar.getInstance();lastDate.add(Calendar.YEAR,1);//加一个年lastDate.set(Calendar.DAY_OF_YEAR, 1);lastDate.roll(Calendar.DAY_OF_YEAR, -1);str=sdf.format(lastDate.getTime());return str;}//获得明年第一天的日期public String getNextYearFirst(){String str = "";SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");Calendar lastDate = Calendar.getInstance();lastDate.add(Calendar.YEAR,1);//加一个年lastDate.set(Calendar.DAY_OF_YEAR, 1);str=sdf.format(lastDate.getTime());return str;}//获得本年有多少天private int getMaxYear(){Calendar cd = Calendar.getInstance();cd.set(Calendar.DAY_OF_YEAR,1);//把日期设为当年第一天cd.roll(Calendar.DAY_OF_YEAR,-1);//把日期回滚一天。
Java实习报告
Java实习报告Java实习报告1一、实习时间:20__年2月25日至20__年3月22日二、实习地点C楼数学实验室三、实习目的学习java开发的相关知识,掌握java开发的基本技术,丰富java开发的实战经验。
通过实习,培养我们综合运用已学知识Java语言的面向对象编程能力,培养我们动手能力,培养我们良好编程规范、编程方法。
以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力;增强自己的团队协作意识,了解软件开发的思考角度和主要流程。
为毕业之后能够更快地进入工作状态并且能够更好的工作,打好一定的基础。
四、实习内容第一阶段:两周时间,我自学了GUI编程,看了大量的教学视频和资料。
我首先在图书馆借阅相关java方面的书籍,潜心学习,首先使自己对java的整个知识结构有一个整体的把握,先粗略的通读一遍,然后回顾整个知识点,勾画出自己不懂得地方,然后找学习过java的同学一起探讨,一起研究。
在将java 的基础知识弄懂之后,我就在上搜索一些java的教学视频,然后自己仿照视频认真地去练习,最终,在两周的时间里,对java 的知识以及重难点都有了一个很好地把握。
第二阶段:由指导老师讲解实际项目完成过程中涉及到的一些专业知识,然后自行分组,完成本次的项目。
按照老师的规划,一周时间学习项目中要用到的知识与技术,然后剩下一周的时间,留给大家做项目。
第一周老师给大家讲了一些要用到的东西。
第一天:老师大概讲了一下我们本次这次的项目内容,是基于JavaSE即时通讯系统。
然后给大家讲了一些java的发展历史,然后回顾了一下java的基础知识。
第二天:本次的实习目的是做一个局域聊天系统。
所以,老师讲了图形界面的绘制。
Swing包是Awt包的改进版它们就是用来绘制应用软件的界面的,然后老师就用这两个包里面的一些方法,写了两个小程序,一个是雪花程序(屏幕上不停地有雪花飘落下来,毫无规律,然后雪花落到屏幕最下方时形成堆积效果),另一个是满天星程序(屏幕上有好多星星,并且这些星星会不停地闪烁),随着两个程序的观看效果,我对本次的学习内容产生了浓厚的兴趣。
Java使用DateTimeFormatter格式化输入的日期时间
Java使⽤DateTimeFormatter格式化输⼊的⽇期时间要求:⽤DateTimeFormatter实现: ⽤扫描器获取输⼊的时间(年⽉⽇时分),这个时间的格式是常⽤的格式,然后格式化这个时间,把格式化的时间输出到控制台,可以在控制台重复输⼊时间.格式化的时间参考企业微信聊天记录的展⽰时间分析:1.时间的常⽤格式为:xxxx-xx-xx xx:xxxxxx/xx/xx xx:xxxxxx.xx.xx xx:xx等格式2.微信显式时间格式为:今天显式: 00:01 - 23:59 ;昨天显式: 昨天 01:01 ;前天显式: 周⼏ 02:02往前推⼀周都显式: 周⼏ 02:02 ;时间再往前推只显⽰: ⼏⽉⼏⽇ 02:02不同年则显式: ⼏年⼏⽉⼏⽇ 02:02也可考虑写⼀个明天显式: 明天 02:02其余时间显式: ⼏⽉⼏⽇ 02:023.考虑特殊情况下的⽇期:⽐如当前天是1号则上个⽉的最后⼀天是昨天往前推⼀周则显式:星期⼏ 02:02如果当前天不⼤于7号则向前推⼀周到了上个⽉也要考虑将其转换为星期4.先输⼊⼀个时间,再对这个时间使⽤DateTimeFormatter进⾏格式化⽐如:输⼊: 2020-1-11 12:22则格式化结果为:下午 12:22代码实现程序开始:package hrkj.chapter7.dateTimeFormatter.Test1;/*** 程序开始⼊⼝ <br>* 2020年1⽉9⽇下午7:10:04** @author wcf* @version 1.0*/public class Test {/*** 程序⼊⼝** @param args ⼊⼝参数*/public static void main(String[] args) {// 程序开始运⾏DateTimeFormatterTest.inoutDateTime();}}⽇期时间等需要⽤到的正则表达式:package hrkj.chapter7.dateTimeFormatter.Test1;/*** ⽇期时间的正则表达式 <br>* 2020年1⽉9⽇下午7:25:11** @author wcf* @version 1.0*/public enum Regex {/*** 匹配闰年*/LEEP_YEAR("((\\d{2}(0[48]|[2468][048]|[13579][26]))|((0[48]|[2468][048]|[13579][26])00))[-\\/\\.]0?2[-\\/\\.]29"),/*** 匹配平年*/COMMON_YEAR("(\\d{3}[1-9]|\\d{2}[1-9]\\d|\\d[1-9]\\d{2}|[1-9]\\d{3})[-\\/\\.]((0?[13578]|1[02])[-\\/\\.](0?[1-9]|[12]\\d|3[01])|((0?[469]|11)[-\\/\\.](0?[1-9]|[12]\\d|30))|(0?2[-\\/\\.](0?[1-9]|1\\d|2[0-8])))"), /*** 匹配时间*/TIME(" ([01]?\\d|2[0-3]):[0-5]?\\d"),/*** 退出程序*/EXIT("exit|退出");/*** 正则*/private final String str;/*** 有参构造器** @param string 正则*/private Regex(String string) {this.str = string;}/*** 获取正则** @return 正则*/public String getStr() {return str;}}提⽰信息:package hrkj.chapter7.dateTimeFormatter.Test1;/*** 提⽰信息 <br>* 2020年1⽉9⽇下午7:25:53** @author wcf* @version 1.0*/public enum Hint {/*** 请输⼊⽇期时间*/INPUT_DATE_TIME("请输⼊⽇期时间:"),/*** ⽇期时间格式*/DATETIMEFORMAT("常⽤格式:xxxx-xx-xx xx:xx\n\t xxxx/xx/xx xx:xx\n\t xxxx.xx.xx xx:xx"),/*** ⽇期错误*/INVOKE_DATE("⽇期错误"),/*** 时间错误*/INVOKE_TIME("时间错误"),/*** ⽇期时间错误*/INVOKE_DATE_TIME("⽇期时间错误!"),/*** 继续或退出*/CONTINUE_OR_QUIT("exit:程序退出\n请输⼊:"),/*** 程序结束*/END_OF_PROGRAM("退出成功,程序结束!");/*** 提⽰*/private final String str;/*** 有参构造器** @param str 提⽰*/private Hint(String str) {this.str = str;}/*** 获取提⽰*/public void println() {System.out.println(str);}}⽇期时间格式化的模板字符串:package hrkj.chapter7.dateTimeFormatter.Test1;/*** ⽇期时间格式化的模板字符串 <br>* 2019年3⽉1⽇下午7:17:19** @author wcf* @version 1.0*/public enum Pattern {/*** 上下午时分*/TIME("a HH:mm"),/*** 昨天时分*/YESTERDAY("昨天 HH:mm"),/*** 明天时分*/TOMORROW("明天 HH:mm"),/*** 星期时分*/WEEK_TIME("E HH:mm"),/*** ⽉⽇时分*/MONTH_DAY_TIME("M⽉d⽇ HH:mm"),/*** 年⽉⽇时分*/YEAR_MONTH_DAY_TIME("y年M⽉d⽇ HH:mm");/*** 显式模式*/private final String str;/*** 有参数构造器** @param str 模式*/private Pattern(String str) {this.str = str;}/*** 获取显式模式** @return 显式模式*/public String getStr() {return str;}}输⼊⽇期时间进⾏处理:package hrkj.chapter7.dateTimeFormatter.Test1;import java.util.Scanner;/*** 输⼊⽇期时间进⾏处理 <br>* 2020年1⽉9⽇下午7:09:31** @author wcf* @version 1.0*/public class DateTimeFormatterTest {/*** 闰年正则*/private final static String LEEP_YEAR = Regex.LEEP_YEAR.getStr(); /*** 平年正则*/private final static String COMMON_YEAR = MON_YEAR.getStr();/*** 时间正则*/private final static String TIME = Regex.TIME.getStr();/*** 退出正则*/private final static String EXIT = Regex.EXIT.getStr();/*** 静态初始化块*/static {// 输⼊提⽰Hint.INPUT_DATE_TIME.println();// ⽇期时间格式Hint.DATETIMEFORMAT.println();// 退出指令Hint.CONTINUE_OR_QUIT.println();}/*** 私有构造器*/private DateTimeFormatterTest() {// 私有构造器// ⽆法创建本类实例}/*** 输⼊⽇期时间*/public static void inoutDateTime() {// 扫描器Scanner scanner = new Scanner(System.in);// 扫描控制台输⼊while (scanner.hasNextLine()) {// 接收控制台输⼊,并去除输⼊前后的空格String str = scanner.nextLine().trim();// 对输⼊的字符进⾏判断if (str.matches(EXIT)) {// 程序退出Hint.END_OF_PROGRAM.println();// 关闭扫描器scanner.close();// 退出虚拟机System.exit(0);// 判断平闰年} else if (str.matches(LEEP_YEAR + TIME) || str.matches(COMMON_YEAR + TIME)) {// 对输⼊的⽇期时间字符串进⾏格式化DateTimeFormatterTools.format(str);// 格式化后提⽰Hint.CONTINUE_OR_QUIT.println();} else {// 输⼊的⽇期时间不正确Hint.INVOKE_DATE_TIME.println();// 输⼊提⽰Hint.INPUT_DATE_TIME.println();continue;}}}}对输⼊的⽇期时间进⾏处理:package hrkj.chapter7.dateTimeFormatter.Test1;import java.time.LocalDateTime;import java.time.MonthDay;import java.time.Year;import java.time.format.DateTimeFormatter;import java.util.Arrays;/*** 对输⼊的⽇期时间进⾏处理 <br>* 2020年1⽉9⽇下午8:08:45** @author wcf* @version 1.0*/public class DateTimeFormatterTools {/*** 年⽉⽇时分*/private static final String YEAR_MONTH_DAY_TIME = Pattern.YEAR_MONTH_DAY_TIME.getStr(); /*** ⽉⽇时分*/private static final String MONTH_DAY_TIME = Pattern.MONTH_DAY_TIME.getStr();/*** 星期时分*/private static final String WEEK_TIME = Pattern.WEEK_TIME.getStr();/*** 上下午时分*/private static final String TIME = Pattern.TIME.getStr();/*** 昨天时分*/private static final String YESTERDAY = Pattern.YESTERDAY.getStr();/*** 明天时分*/private static final String TOMORROW = Pattern.TOMORROW.getStr();/*** 当前年*/private static int currentYear = Year.now().getValue();/*** 当前⽉*/private static int currentMonth = MonthDay.now().getMonthValue();/*** 当前⽇*/private static int currentDay = MonthDay.now().getDayOfMonth();/*** ⼤⽉*/private static int[] bigMonth = { 1, 3, 5, 7, 8, 10, 12 };/*** ⼩⽉*/private static int[] smallMonth = { 4, 6, 9, 11 };/*** 私有构造器*/private DateTimeFormatterTools() {// 私有构造器,⽆法实例化}/*** 处理输⼊的⽇期时间** @param str 输⼊的⽇期时间*/public static void format(String str) {// 将⽇期和时间⽤空格进⾏分割String[] datetime = str.split(" ");// 分割成的⽇期String date = datetime[0];// 分割成的时间String time = datetime[1];// ⽇期分割⽅式String splitter = "";// ⽇期可以⽤- . / 进⾏分割// 如果包含了-./这三种中的⼀种,则⽤这些进⾏分割if (date.contains(".")) {splitter = "\\.";} else if (date.contains("-")) {splitter = "-";} else if (date.contains("/")) {splitter = "/";}// 使⽤⽇期的分割⽅式对⽇期进⾏分割String[] dateString = date.split(splitter);// 使⽤:对时间进⾏分割,时间只能⽤:进⾏分割String[] timeString = time.split(":");// 时间分割后的数组长度不是2则错误,因为输⼊的的时间只有时和分if (timeString.length != 2) {// 时间错误Hint.INVOKE_TIME.println();return;}// ⽇期分割后的数组长度不是3则错误,因为输⼊的⽇期要有年,⽉和⽇if (dateString.length != 3) {// ⽇期错误Hint.INVOKE_DATE.println();return;}// 输⼊的年int year = Integer.valueOf(dateString[0]);// 输⼊的⽉int month = Integer.valueOf(dateString[1]);// 输⼊的⽇int day = Integer.valueOf(dateString[2]);// 输⼊的时int hour = Integer.valueOf(timeString[0]);// 输⼊的分int minute = Integer.valueOf(timeString[1]);// 对拆解判断过的字符串进⾏重新组合String str1 = year + splitter + month + splitter + day + " " + hour + ":" + minute;// 对组合后的字符串进⾏解析DateTimeFormatter ofPattern = DateTimeFormatter.ofPattern("y" + splitter + "M" + splitter + "d" + " H:m"); // 将字符串解析成⽇期时间对象LocalDateTime parse = LocalDateTime.parse(str1, ofPattern);// 同⼀年if (year == currentYear) {// 同⼀⽉if (month == currentMonth) {// 同⼀天if (day == currentDay) {// 今天printDateTime(TIME, parse);} else if (day - currentDay == 1) {// 明天printDateTime(TOMORROW, parse);} else if (day - currentDay == -1) {// 昨天printDateTime(YESTERDAY, parse);} else if (day - currentDay >= -7 && day - currentDay <= -2) {// 向前⼀周以星期来表⽰printDateTime(WEEK_TIME, parse);} else {// 不同天printDateTime(MONTH_DAY_TIME, parse);}// 下个⽉} else if (month - currentMonth == 1) {// 如果输⼊的⽇是1,则判断当前⽉和天if (day == 1) {// 判断是⼤⽉⼩⽉还是⼆⽉,如果当前天数是⽉份最后⼀天,则输出明天if (Arrays.binarySearch(bigMonth, currentMonth) >= 0 && currentDay == 31) {// 明天printDateTime(TOMORROW, parse);return;} else if (Arrays.binarySearch(smallMonth, currentMonth) >= 0 && currentDay == 30) { // 明天printDateTime(TOMORROW, parse);return;} else if (currentMonth == 2) {// 判断输⼊的是闰年还是平年if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {if (currentDay == 29) {// 明天printDateTime(TOMORROW, parse);return;}} else {if (currentDay == 28) {// 明天printDateTime(TOMORROW, parse);return;}}} else {// 使⽤⽉⽇进⾏输出printDateTime(MONTH_DAY_TIME, parse);}} else {// 输⼊的⽇不是1,这输出⽉⽇时分printDateTime(MONTH_DAY_TIME, parse);}// 上⼀⽉} else if (month - currentMonth == -1) {// 如果当前⽇是1,则判断输⼊⽇是否是上⽉最后⼀天if (currentDay == 1) {// 判断是⼤⽉⼩⽉还是⼆⽉,输⼊的天数是不是⽉份的最后⼀天,是则是昨天if (Arrays.binarySearch(bigMonth, month) >= 0 && day == 31) {// 昨天printDateTime(YESTERDAY, parse);return;} else if (Arrays.binarySearch(smallMonth, month) >= 0 && day == 30) {// 昨天printDateTime(YESTERDAY, parse);return;} else if (month == 2) {// 判断是闰年还是平年if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {if (day == 29) {// 昨天printDateTime(YESTERDAY, parse);return;}} else {if (day == 28) {// 昨天printDateTime(YESTERDAY, parse);return;}}}}// 如果当前⽇不⼩于7,则输⼊⽉⽇时分,⼩于7则从当前天往前⼀周转换为星期if (currentDay >= 7) {// 输出⽉⽇时分printDateTime(MONTH_DAY_TIME, parse);// 如果当前天⼩于7,则当前天向前⼀周转换为星期} else if (Arrays.binarySearch(bigMonth, month) >= 0 && 31 - day + currentDay < 7) {// 年⽉⽇转换为星期printDateTime(WEEK_TIME, parse);} else if (Arrays.binarySearch(smallMonth, month) >= 0 && 30 - day + currentDay < 7) { // 年⽉⽇转换为星期printDateTime(WEEK_TIME, parse);} else if (month == 2) {// 判断是闰年还是平年if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {if (29 - day + currentDay < 7) {// 年⽉⽇转换为星期printDateTime(WEEK_TIME, parse);} else {// 如果向前超出了⼀周输出⽉⽇时分printDateTime(MONTH_DAY_TIME, parse);}} else {if (28 - day + currentDay < 7) {// 年⽉⽇转换为星期printDateTime(WEEK_TIME, parse);} else {// 如果向前超出了⼀周输出⽉⽇时分printDateTime(MONTH_DAY_TIME, parse);}}} else {// 当前天向前超出了⼀周输出⽉⽇时分printDateTime(MONTH_DAY_TIME, parse);}} else {// 不同⽉,输出⽉⽇时分printDateTime(MONTH_DAY_TIME, parse);}} else {// 不同年,输出年⽉⽇时分printDateTime(YEAR_MONTH_DAY_TIME, parse);}}/*** 格式化结果** @param pattern 模式字符串* @param datetime 时间*/private static void printDateTime(String pattern, LocalDateTime datetime) {// 通过模式字符串对时间进⾏格式化DateTimeFormatter ofPattern = DateTimeFormatter.ofPattern(pattern);// 打印格式化后的时间System.out.println("格式化结果:\n\t" + ofPattern.format(datetime));}}代码测试结果:请输⼊⽇期时间:常⽤格式:xxxx-xx-xx xx:xxxxxx/xx/xx xx:xxxxxx.xx.xx xx:xxexit:程序退出请输⼊:2020-1-11 12:22格式化结果:下午 12:22exit:程序退出请输⼊:2020-1-11 2:22格式化结果:上午 02:22exit:程序退出请输⼊:2020-1-10 1:22格式化结果:昨天 01:22exit:程序退出请输⼊:2020-1-7 12:22格式化结果:周⼆ 12:22exit:程序退出请输⼊:2020-1-12 12:22格式化结果:明天 12:22exit:程序退出请输⼊:2020-1-13 12:22格式化结果:1⽉13⽇ 12:22exit:程序退出请输⼊:2020-2-22 12:22格式化结果:2⽉22⽇ 12:22exit:程序退出请输⼊:2019-12-31 12:22格式化结果:2019年12⽉31⽇ 12:22exit:程序退出请输⼊:更多情况测试,或者代码简化,请⾃⾏探索测试以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
java获取当天,前天,明天,本周,本月,本年的开始日期时间和结束日期时间
java获取当天,前天,明天,本周,本⽉,本年的开始⽇期时间和结束⽇期时间1package demoone;23import java.sql.Timestamp;4import java.text.ParseException;5import java.text.SimpleDateFormat;6import java.util.ArrayList;7import java.util.Calendar;8import java.util.Date;9import java.util.GregorianCalendar;10import java.util.List;1112public class DateUtils {13//获取当天的开始时间14public static java.util.Date getDayBegin() {15 Calendar cal = new GregorianCalendar();16 cal.set(Calendar.HOUR_OF_DAY, 0);17 cal.set(Calendar.MINUTE, 0);18 cal.set(Calendar.SECOND, 0);19 cal.set(LISECOND, 0);20return cal.getTime();21 }22//获取当天的结束时间23public static java.util.Date getDayEnd() {24 Calendar cal = new GregorianCalendar();25 cal.set(Calendar.HOUR_OF_DAY, 23);26 cal.set(Calendar.MINUTE, 59);27 cal.set(Calendar.SECOND, 59);28return cal.getTime();29 }30//获取昨天的开始时间31public static Date getBeginDayOfYesterday() {32 Calendar cal = new GregorianCalendar();33 cal.setTime(getDayBegin());34 cal.add(Calendar.DAY_OF_MONTH, -1);35return cal.getTime();36 }37//获取昨天的结束时间38public static Date getEndDayOfYesterDay() {39 Calendar cal = new GregorianCalendar();40 cal.setTime(getDayEnd());41 cal.add(Calendar.DAY_OF_MONTH, -1);42return cal.getTime();43 }44//获取明天的开始时间45public static Date getBeginDayOfTomorrow() {46 Calendar cal = new GregorianCalendar();47 cal.setTime(getDayBegin());48 cal.add(Calendar.DAY_OF_MONTH, 1);4950return cal.getTime();51 }52//获取明天的结束时间53public static Date getEndDayOfTomorrow() {54 Calendar cal = new GregorianCalendar();55 cal.setTime(getDayEnd());56 cal.add(Calendar.DAY_OF_MONTH, 1);57return cal.getTime();58 }59//获取本周的开始时间60public static Date getBeginDayOfWeek() {61 Date date = new Date();62if (date == null) {63return null;64 }65 Calendar cal = Calendar.getInstance();66 cal.setTime(date);67int dayofweek = cal.get(Calendar.DAY_OF_WEEK);68if (dayofweek == 1) {69 dayofweek += 7;70 }71 cal.add(Calendar.DATE, 2 - dayofweek);72return getDayStartTime(cal.getTime());73 }74//获取本周的结束时间75public static Date getEndDayOfWeek(){76 Calendar cal = Calendar.getInstance();77 cal.setTime(getBeginDayOfWeek());78 cal.add(Calendar.DAY_OF_WEEK, 6);79 Date weekEndSta = cal.getTime();80return getDayEndTime(weekEndSta);81 }82//获取本⽉的开始时间83public static Date getBeginDayOfMonth() {84 Calendar calendar = Calendar.getInstance();85 calendar.set(getNowYear(), getNowMonth() - 1, 1);86return getDayStartTime(calendar.getTime());87 }88//获取本⽉的结束时间89public static Date getEndDayOfMonth() {90 Calendar calendar = Calendar.getInstance();91 calendar.set(getNowYear(), getNowMonth() - 1, 1);92int day = calendar.getActualMaximum(5);93 calendar.set(getNowYear(), getNowMonth() - 1, day);94return getDayEndTime(calendar.getTime());95 }96//获取本年的开始时间97public static java.util.Date getBeginDayOfYear() {98 Calendar cal = Calendar.getInstance();99 cal.set(Calendar.YEAR, getNowYear());100// cal.set101 cal.set(Calendar.MONTH, Calendar.JANUARY);102 cal.set(Calendar.DATE, 1);103104return getDayStartTime(cal.getTime());105 }106//获取本年的结束时间107public static java.util.Date getEndDayOfYear() {108 Calendar cal = Calendar.getInstance();109 cal.set(Calendar.YEAR, getNowYear());110 cal.set(Calendar.MONTH, Calendar.DECEMBER);111 cal.set(Calendar.DATE, 31);112return getDayEndTime(cal.getTime());113 }114//获取某个⽇期的开始时间115public static Timestamp getDayStartTime(Date d) {116 Calendar calendar = Calendar.getInstance();117if(null != d) calendar.setTime(d);118 calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);119 calendar.set(LISECOND, 0);120return new Timestamp(calendar.getTimeInMillis());121 }122//获取某个⽇期的结束时间123public static Timestamp getDayEndTime(Date d) {124 Calendar calendar = Calendar.getInstance();125if(null != d) calendar.setTime(d);126 calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59); 127 calendar.set(LISECOND, 999);128return new Timestamp(calendar.getTimeInMillis());129 }130//获取今年是哪⼀年131public static Integer getNowYear() {132 Date date = new Date();133 GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();134 gc.setTime(date);135return Integer.valueOf(gc.get(1));136 }137//获取本⽉是哪⼀⽉138public static int getNowMonth() {139 Date date = new Date();140 GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();141 gc.setTime(date);142return gc.get(2) + 1;143 }144//两个⽇期相减得到的天数145public static int getDiffDays(Date beginDate, Date endDate) {146147if (beginDate == null || endDate == null) {148throw new IllegalArgumentException("getDiffDays param is null!");149 }150151long diff = (endDate.getTime() - beginDate.getTime())152 / (1000 * 60 * 60 * 24);153154int days = new Long(diff).intValue();155156return days;157 }158//两个⽇期相减得到的毫秒数159public static long dateDiff(Date beginDate, Date endDate) {160long date1ms = beginDate.getTime();161long date2ms = endDate.getTime();162return date2ms - date1ms;163 }164//获取两个⽇期中的最⼤⽇期165public static Date max(Date beginDate, Date endDate) {166if (beginDate == null) {167return endDate;168 }169if (endDate == null) {170return beginDate;171 }172if (beginDate.after(endDate)) {173return beginDate;174 }175return endDate;176 }177//获取两个⽇期中的最⼩⽇期178public static Date min(Date beginDate, Date endDate) {179if (beginDate == null) {180return endDate;181 }182if (endDate == null) {183return beginDate;184 }185if (beginDate.after(endDate)) {186return endDate;187 }188return beginDate;189 }190//返回某⽉该季度的第⼀个⽉191public static Date getFirstSeasonDate(Date date) {192final int[] SEASON = { 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4 };193 Calendar cal = Calendar.getInstance();194 cal.setTime(date);195int sean = SEASON[cal.get(Calendar.MONTH)];196 cal.set(Calendar.MONTH, sean * 3 - 3);197return cal.getTime();198 }199//返回某个⽇期下⼏天的⽇期200public static Date getNextDay(Date date, int i) {201 Calendar cal = new GregorianCalendar();202 cal.setTime(date);203 cal.set(Calendar.DATE, cal.get(Calendar.DATE) + i);204return cal.getTime();205 }206//返回某个⽇期前⼏天的⽇期207public static Date getFrontDay(Date date, int i) {208 Calendar cal = new GregorianCalendar();209 cal.setTime(date);210 cal.set(Calendar.DATE, cal.get(Calendar.DATE) - i);211return cal.getTime();212 }213//获取某年某⽉到某年某⽉按天的切⽚⽇期集合(间隔天数的⽇期集合)214public static List getTimeList(int beginYear, int beginMonth, int endYear, 215int endMonth, int k) {216 List list = new ArrayList();217if (beginYear == endYear) {218for (int j = beginMonth; j <= endMonth; j++) {219 list.add(getTimeList(beginYear, j, k));220221 }222 } else {223 {224for (int j = beginMonth; j < 12; j++) {225 list.add(getTimeList(beginYear, j, k));226 }227228for (int i = beginYear + 1; i < endYear; i++) {229for (int j = 0; j < 12; j++) {230 list.add(getTimeList(i, j, k));231 }232 }233for (int j = 0; j <= endMonth; j++) {234 list.add(getTimeList(endYear, j, k));235 }236 }237 }238return list;239 }240//获取某年某⽉按天切⽚⽇期集合(某个⽉间隔多少天的⽇期集合)241public static List getTimeList(int beginYear, int beginMonth, int k) {242 List list = new ArrayList();243 Calendar begincal = new GregorianCalendar(beginYear, beginMonth, 1); 244int max = begincal.getActualMaximum(Calendar.DATE);245for (int i = 1; i < max; i = i + k) {246 list.add(begincal.getTime());247 begincal.add(Calendar.DATE, k);248 }249 begincal = new GregorianCalendar(beginYear, beginMonth, max);250 list.add(begincal.getTime());251return list;252 }253 }1//获取某年某⽉的第⼀天⽇期2public static Date getStartMonthDate(int year, int month) {3 Calendar calendar = Calendar.getInstance();4 calendar.set(year, month - 1, 1);5return calendar.getTime();6 }78//获取某年某⽉的最后⼀天⽇期9public static Date getEndMonthDate(int year, int month) {10 Calendar calendar = Calendar.getInstance();11 calendar.set(year, month - 1, 1);12int day = calendar.getActualMaximum(5);13 calendar.set(year, month - 1, day);14return calendar.getTime();15 }DateUtils。
利用Java中Calendar计算两个日期之间的天数和周数
利⽤Java中Calendar计算两个⽇期之间的天数和周数前⾔究竟什么是⼀个 Calendar 呢?中⽂的翻译就是⽇历,那我们⽴刻可以想到我们⽣活中有阳(公)历、阴(农)历之分。
它们的区别在哪呢?⽐如有:⽉份的定义 - 阳`(公)历⼀年12 个⽉,每个⽉的天数各不同;阴(农)历,每个⽉固定28天每周的第⼀天 - 阳(公)历星期⽇是第⼀天;阴(农)历,星期⼀是第⼀天实际上,在历史上有着许多种纪元的⽅法。
它们的差异实在太⼤了,⽐如说⼀个⼈的⽣⽇是"⼋⽉⼋⽇" 那么⼀种可能是阳(公)历的⼋⽉⼋⽇,但也可以是阴(农)历的⽇期。
所以为了计时的统⼀,必需指定⼀个⽇历的选择。
那现在最为普及和通⽤的⽇历就是 "Gregorian Calendar"。
也就是我们在讲述年份时常⽤ "公元⼏⼏年"。
Calendar 抽象类定义了⾜够的⽅法,让我们能够表述⽇历的规则。
Java 本⾝提供了对 "Gregorian Calendar" 规则的实现。
我们从 Calendar.getInstance()中所获得的实例就是⼀个 "GreogrianCalendar" 对象(与您通过new GregorianCalendar() 获得的结果⼀致)。
下⾯话不多说了,来看看本⽂的正⽂吧。
利⽤java中Calendar类计算出两个⽇期之间的天数和周数的算法!计算出⽇期之间的天数:public Object countTwoDate(Object startDate, Object endDate){if(StringUtils.isNotEmpty(startDate) && StringUtils.isNotEmpty(endDate)){Date start=(Date)startDate;Date end = (Date)endDate;Calendar cal=Calendar.getInstance();cal.setTime(start);long time1=cal.getTimeInMillis();cal.setTime(end);long time2=cal.getTimeInMillis();long between_days=(time2-time1)/(1000*3600*24);return Integer.parseInt(String.valueOf(between_days));}return null;}再计算出周数:public Object countTwoDayWeek(Object startDate, Object endDate){if(StringUtils.isNotEmpty(startDate) && StringUtils.isNotEmpty(endDate)){Date start=(Date)startDate;Date end = (Date)endDate;Calendar cal=Calendar.getInstance();cal.setTime(start);long time1=cal.getTimeInMillis();cal.setTime(end);long time2=cal.getTimeInMillis();long between_days=(time2-time1)/(1000*3600*24);Double days=Double.parseDouble(String.valueOf(between_days));if((days/7)>0 && (days/7)<=1){//不满⼀周的按⼀周算return 1;}else if(days/7>1){int day=days.intValue();if(day%7>0){return day/7+1;}else{return day/7;}}else if((days/7)==0){return 0;}else{//负数返还nullreturn null;}}return null;}总结以上就是利⽤Java中的Calendar计算两个⽇期之间天数和周数的全部内容,希望本⽂的内容对⼤家的学习或者⼯作能带来⼀定的帮助,如果有疑问⼤家可以留⾔交流。
java计算周次公式
在Java中计算周次(也就是给定日期是那一年的第几周)通常可以通过java.time包中的LocalDate 和TemporalAdjusters类来实现。
下面是一个简单的示例代码,展示如何计算一个给定日期的周次:import java.time.LocalDate;import java.time.DayOfWeek;import java.time.temporal.TemporalAdjusters;public class WeekNumberCalculator {public static void main(String[] args) {// 假设我们要计算2023年1月1日是第几周LocalDate date = LocalDate.of(2023, 1, 1);// 获取该年第一天的日期LocalDate firstDayOfYear = date.with(TemporalAdjusters.firstDayOfYear());// 计算给定日期是该年的第几天long dayOfYear = date.toEpochDay() - firstDayOfYear.toEpochDay() + 1;// 计算周次int weekNumber = (int) Math.ceil(dayOfYear / 7.0);// 如果第一天不是周一,需要调整周次DayOfWeek firstDayOfWeek = firstDayOfYear.getDayOfWeek();if (firstDayOfWeek != DayOfWeek.MONDAY) {// 计算第一周的剩余天数int firstWeekRemainingDays = 7 - firstDayOfWeek.getValue() + 1;// 如果给定日期在第一周剩余天数内,周次减一if (dayOfYear <= firstWeekRemainingDays) {weekNumber--;}}// 输出结果System.out.println("The week number for " + date + " is " + weekNumber);}}这段代码首先通过LocalDate.of方法创建一个表示给定日期的LocalDate对象。
java 每年10月1日凌晨1点的cron表达式
Java是一种广泛使用的编程语言,而cron表达式则是用于在特定时间点执行程序的一种表达方式。
而每年10月1日凌晨1点的cron表达式正是一个值得探讨的话题。
1. 什么是cron表达式?在介绍每年10月1日凌晨1点的cron表达式之前,让我们先来了解一下什么是cron表达式。
Cron表达式是一种时间表达式,用于在特定的时间点执行程序。
在Java中,常常使用Quartz等调度框架来使用cron表达式。
2. cron表达式的结构cron表达式的结构分为6个部分,分别表示秒、分、时、日、月、周几。
每个部分都有相应的取值范围,以及特定的符号用于表示不同的时间规则。
3. 每年10月1日凌晨1点的cron表达式根据前面的介绍,我们可以得出每年10月1日凌晨1点的cron表达式为:0 1 1 10 ? *4. 核心解析- 0表示秒,取值范围为0-59,表示每分钟的第0秒执行- 1表示分,取值范围为0-59,表示每小时的第1分执行- 1表示小时,取值范围为0-23,表示在凌晨1点执行- 10表示日,取值范围为1-31,表示在每月的第10天执行- ?表示月,取值范围为1-12,由于有固定的月份,因此使用?表示任意月份- *表示周几,取值范围为1-7,1表示周日,7表示周六,因此使用*表示任意周几5. 使用场景对于每年10月1日凌晨1点执行的定时任务,可以在需要执行的程序上配置该cron表达式,从而实现在指定时间点执行特定的任务。
比如在每年重要的纪念日、活动日等需要精准执行任务的场景中,可以使用这个cron表达式来实现。
6. 注意事项在使用cron表达式执行定时任务时,需要注意服务器的时区设置,以及对于夏令时的处理。
因为时区和夏令时的改变会影响具体的执行时间,因此需要在使用过程中进行充分的测试和调整。
7. 总结每年10月1日凌晨1点的cron表达式为0 1 1 10 ? *,是一种用于定时执行任务的时间表达方式,在特定的场景下有着重要的作用。
《Java程序设计》教学日历
教学方式及学时分配
讲授
实验
实习
3
0
0
3
0
0
3
0
0
3
0
0
3
0
0
3
0
0
3
0
0
3
0
0
3
0
0
ቤተ መጻሕፍቲ ባይዱ
3
0
0
3
0
0
3
0
0
3
0
0
3
0
0
3
0
0
3
0
0
3
0
0
陈红阳编,西安电子科技大学出版社
12月4日
12月11日
12月18日 12月25日
1月1日 1月8日
重庆人文科技学院教学日历
2019级计算 机科学与技 专业年级: 术
上课周数及周学时数:
课程类别:
17周 3课时/ 周
授课内容摘要
面向对象技术基础、Java技术简介、发展历史、构成、特 性、JDK安装及配置、创建一个Java应用程序,编译
所在院系: 计算机工程学院
课程名称: Java程序设计 本科
9月7日 9月14日 9月21日 9月28日 10月5日 10月12日 10月19日 10月26日 11月2日 11月9日 11月16日 11月23日
11月30日
12月7日
12月14日 12月21日 12月28日
1月4日
周次
第一周
— 第二周 — 第三周
变量、数据类型、数组和枚举类型
运算符、表达式和语句、顺序结构、选择结构、循环结构 、嵌套的结构
JAVA日期时间的计算
JAVA日期时间的计算最近,手头有不少项目,其中就有一个类似公文流转的项目,其中有一个模块是任务的制定,而在任务的类型中有一个循环任务,就是用户输入任务的开始日期、结束日期,还需要输入一个周期数,比如每周的星期几、每月的多少号等,这里面就牵扯到JAVA日期时间的计算,从网上收集了一下,整理下来,供大家参考^_^Java 语言的Calendar,GregorianCalendar (日历),Date(日期), 和DateFormat(日期格式)组成了Java标准的一个基本但是非常重要的部分. 日期是商业逻辑计算一个关键的部分. 所有的开发者都应该能够计算未来的日期, 定制日期的显示格式, 并将文本数据解析成日期对象。
学习日期, 日期格式, 日期的解析和日期的计算。
我们将讨论下面的类:1、具体类(和抽象类相对)java.util.Date2、抽象类java.text.DateFormat 和它的一个具体子类,java.text.SimpleDateFormat3、抽象类java.util.Calendar 和它的一个具体子类,java.util.GregorianCalendar 具体类可以被实例化, 但是抽象类却不能. 你首先必须实现抽象类的一个具体子类.1. java.util.Date及其格式化Date 类从Java 开发包(JDK) 1.0 就开始进化, 当时它只包含了几个取得或者设置一个日期数据的各个部分的方法, 比如说月, 日, 和年. 这些方法现在遭到了批评并且已经被转移到了Calendar类里去了, 我们将在本文中进一步讨论它. 这种改进旨在更好的处理日期数据的国际化格式. 就象在JDK 1.1中一样, Date 类实际上只是一个包裹类, 它包含的是一个长整型数据, 表示的是从GMT(格林尼治标准时间)1970年, 1 月1日00:00:00这一刻之前或者是之后经历的毫秒数.1.1. 创建java.util.DateJava统计从1970年1月1日起的毫秒的数量表示日期。
java中各种时间格式的转化
java中各种时间格式的转化时间和日期中常用到的几个类:java.util.Date,java.util.Calendar,java.util.GregorainCalendar,java.text.DateFormat,java.text.SimpleDateFormatjava.util.Date :表示特定瞬间,精确到毫秒一天是24 * 60 * 60 = 86400 秒世界时(UT 或UTC) , 格林威治时间(GMT), 格林威治时(GMT)和世界时(UT)是相等的,格林威治时(GMT) 是标准的"民间"称呼, 世界时(UT) 是相同标准的科学称呼。
UTC 和UT 的区别是:UTC 是基于原子时钟的,UT 是基于天体观察的。
(中文版的jdk 真是好啊,跟科普教材是的,呵呵)常用的构造方法:Date();Date(long date)(long date) 表示从标准基准时间(称为"历元" epoch ,即1970.1.100:00:00 GMT)经历的毫秒数。
还有一些构造方法已经deprecated 了主要的方法:(介绍几个常用的,详细的查询jdk 文档)boolean after(Date when) 测试日期在此日期之后。
boolean before(Date when) 测试日期在此日期之前。
Object clone() 返回此对象的副本long getTime() 返回自1970.1.1 00:00:00 GMT 后,此对象表示的毫秒数void setTime(long time) 设置此Date 对象,以表示1970 年1 月1 日00:00:00 GMT 以后time 毫秒的时间点。
String toString() 将Date 对象转化成以下形式的String:dow mon dd hh:mm:ss zzz yyyy其中:dow 是一周中的某一天(Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
21201JAVA实习计划表
编号:QCB-016-B4实训(专周)计划表2012至2013学年第二学期周次:14的结果输出。
21.编写程序,从键盘输入一字符串,从屏幕输出并将其存入a.txt中pubilc classT est{public String getStr(){String s=System.in();Scanne r san=new Scanne r(s);r eturn san;}public static void main(String args[]){System.out.printl n(new Test().getStr());new T est().writet ofile();}public void writet ofile() throws Except ion{S tring text=this.getStr();FileOu tputS tream fos=new FileOu tputS tream("a.txt");f os.write(text);f os.flush();f os.close();}}22. 定义一个实现常用数学运算的类My Math,类中提供ma x()、min()、sum()、avera g e()四个静态方法,每个方法带有三个整型参数,分别实现对三个整数求取最大值、最小值、和值及平均值的运算。
在主类中对任意输入的三个正整数,调用MyMa th类的四个静态方法,求取结果并输出。
public classMy Math{public My Math(){}public static int max(int a,int b,int c){int max=a;if (max<b){max=b;}if(max<c){max=c;}return max;}public static int min(int a,int b,int c){int min=a;if(min>b){min=b;}else if(min >c){min=c;}return min;}public static int sum(int a,int b,int c){return a+b+c;}public static double averag e (int a,int b,int c){return sum(a,b,c)/3;}}23.定义一个类,该类具有x和y两个属性。
java中常用的与时间有关的方法(string与date转化出生日期转年龄时间计算周次等)
java中常用的与时间有关的方法(string与date转化,出生日期转年龄,时间计算周次等)[java] view plain copy /** * 计算两个日期之间相差的天数* @param smdate 较小的时间* @param bdate 较大的时间*@return 相差天数* @throws ParseException*/ public static int DaysMinus(Date startDate,Date endDate) throws ParseException{ SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); startDate = sdf.parse(sdf.format(startDate)); endDate = sdf.parse(sdf.format(endDate)); Calendar cal = Calendar.getInstance();cal.setTime(startDate); long startTime = cal.getTimeInMillis();cal.setTime(endDate); long endTime =cal.getTimeInMillis(); longbetween_days=(endTime-startTime)/(1000*3600*24); returnInteger.parseInt(String.valueOf(between_days));} /** *字符串的日期格式的计算相差天数*@param 开始日期:startDate *@param 结束日期:endDate *@return 相差天数*/ public static int DaysMinus(String startDate,String endDate) throws ParseException{ SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");Calendar cal = Calendar.getInstance();cal.setTime(sdf.parse(startDate)); long startTime = cal.getTimeInMillis();cal.setTime(sdf.parse(endDate)); long endTime = cal.getTimeInMillis(); long between_days = (endTime-startTime)/(1000*3600*24); return Integer.parseInt(String.valueOf(between_days)); }/** * String类型日期转Date * @param date* @return * @throws ParseException */public static Date string2Date(String date) throws ParseException{ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date resultDate = sdf.parse(date); return resultDate; } /** * Date类型日期转String * @param date * @return * @throws ParseException */ public static Stringdate2String(Date date) throwsParseException{ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String currentTime = sdf.format(date); return currentTime; } /** * 日期相加*@param date * @param days * @return*/ public static Date dateAdd(Date date, int days) { Calendar calendar = new GregorianCalendar(); calendar.setTime(date);calendar.add(calendar.DATE, days); date = calendar.getTime(); return date; }/** * String 类型日期相加* @param date* @param days * @return * @throws ParseException */ public static DatedateAdd(String date, int days) throws ParseException{ Date Datedate = string2Date(date);Calendar calendar = new GregorianCalendar(); calendar.setTime(Datedate);calendar.add(calendar.DATE, days); Datedate = calendar.getTime(); return Datedate; } /** * 获取当前日期的周次* 07:"星期日", 01:"星期一", 02:"星期二", 03:"星期三", 04:"星期四", 05:"星期五", 06:"星期六" * @author 秦海*@param dt * @return */ public static String DayOfWeek2MatchDict(Date dt) { String[] weekDays = {"07", "01", "02", "03", "04", "05", "06"}; Calendar cal = Calendar.getInstance();cal.setTime(dt); int dayOfWeek =cal.get(Calendar.DAY_OF_WEEK) - 1; if (dayOfWeek < 0){ dayOfWeek =0; } returnweekDays[dayOfWeek]; } /** * 获取系统当前日期date类型* @return * @throws ParseException */ public static Date getDateSysDate() throws ParseException{ Date now = new Date();SimpleDateFormat sdf = newSimpleDateFormat("yyyy-MM-dd"); String sysDate = sdf.format(now); Date resultDate = sdf.parse(sysDate); return resultDate; } /** * 按照传入的格式获取系统date类型世间* -年-月-日时:分:秒.毫秒* {yyyy-MM-ddHH:mm:ss.fff}:使用24小时制格式化日期*{yyyy-MM-dd hh:mm:ss.fff}:使用12小时制格式化日期* {yyyy-MM-dd HH:mm:ss zzz} * {yyyy-MM-ddHH:mm:ss.ff zzz} * {yyyy-MM-dd HH:mm:ss.fff zzz} * {yyyy-MM-dd HH:mm:ss.ffff zzz} * @param format * @return * @throws ParseException */ public static Date getDateSysDate(String format) throws ParseException { Date now = new Date(); SimpleDateFormat sdf = new SimpleDateFormat(format); String sysDate = sdf.format(now); Date resultDate = sdf.parse(sysDate); return resultDate; } } /** * 根据出生日期获取人的年龄* * @param strBirthDate(yyyy-mm-dd or yyyy/mm/dd) * @return */ public static String getPersonAgeByBirthDate(DatedateBirthDate){ if (dateBirthDate ==null){ return ""; } SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); String strBirthDate=dateFormat.format(dateBirthDate);//读取当前日期Calendar c =Calendar.getInstance(); int year =c.get(Calendar.YEAR); int month =c.get(Calendar.MONTH)+1; int day =c.get(Calendar.DATE); //计算年龄intage = year - Integer.parseInt(strBirthDate.substring(0, 4)) - 1; if (Integer.parseInt(strBirthDate.substring(5,7)) < month) { age++; } else if (Integer.parseInt(strBirthDate.substring(5,7))== month&& Integer.parseInt(strBirthDate.substring(8,10)) <= day){ age++; }return String.valueOf(age); } /** * 根据出生日期获取人的年龄* * @param strBirthDate(yyyy-mm-dd or yyyy/mm/dd) * @return */ public static StringgetPersonAgeByBirthDate(StringstrBirthDate){ if("".equals(strBirthDate) || strBirthDate ==null){ return ""; } //读取当前日期Calendar c =Calendar.getInstance(); int year =c.get(Calendar.YEAR); int month =c.get(Calendar.MONTH)+1; int day =c.get(Calendar.DATE); //计算年龄int age = year - Integer.parseInt(strBirthDate.substring(0, 4)) - 1; if (Integer.parseInt(strBirthDate.substring(5,7)) < month) { age++; } else if(Integer.parseInt(strBirthDate.substring(5,7))== month&& Integer.parseInt(strBirthDate.substring(8,10)) <= day){ age++; }return String.valueOf(age); } /** * 获取当前日期是星期几<br> * 0-"星期日", 1-"星期一", 2-"星期二", 3-"星期三", 4-"星期四", 5-"星期五", 6-"星期六" * @param dt * @return */ public static int getDayOfWeek(Date dt) { Calendar cal = Calendar.getInstance(); cal.setTime(dt);int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK) - 1; return dayOfWeek; } /** * 获取当前日期是星期几* 0-"星期日", 1-"星期一", 2-"星期二", 3-"星期三", 4-"星期四", 5-"星期五", 6-"星期六" * @param: strDate * */ public static int getDayOfWeek(String strDate){ Stringformat="yyyy-MM-dd"; //可以方便地修改日期格式SimpleDateFormat dateFormat = new SimpleDateFormat(format); Date date = null;try { date = dateFormat.parse(strDate); Calendar c = Calendar.getInstance();c.setTime(date); intdayOfWeek=c.get(Calendar.DAY_OF_WEEK)- 1;;return dayOfWeek; } catch (ParseException e) { e.printStackTrace(); }return -1; } /** * 获取系统当前时间*/ public static String getSysTime(){ Date now = new Date(); //可以方便地修改日期格式SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String sysDate = dateFormat.format(now);return sysDate; } /** * 获取系统当前时间*/ public static StringgetSysDate(){ Date now = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); String sysDate = dateFormat.format(now); return sysDate; } /** * 按格式获取系统当前时间* * @param: format * */ public static String getSysDate(Stringformat){ Date now = new Date(); //可以方便地修改日期格式SimpleDateFormat dateFormat = new SimpleDateFormat(format);String sysDate = dateFormat.format(now);return sysDate; }。
java时间正则表达式
(10|12|0?[13578])([-\/\._])(3[01]|[12][0-9]
|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))
([-\/\._])(11|0?[469])([-\/\._])(30|[12][0-9]
([-\/\._])(29)$)|(^([1][89][0][48])([-\/\._])
(0?2)([-\/\._])(29)$)|(^([2-9][0-9][0][48])
([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89]
[2468][048])([-\/\._])(0?2)([-\/\._])(29)$)|
1、月份为 1, 3, 5, 7, 8, 10, 12,天数范围为01 - 31,匹配MM-DD的正则表达式为:(0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])
2、月份为 4, 6, 9, 11,天数范围为 01-30,匹配MM-DD的正则表达式为:(0[469]|11)-(0[1-9]|[12][0-9]|30)
分析:
1、什么是合法的日期范围?对于不同的应用场景,这个问题有不同的解释。这里采纳MSDN中的约定:
DateTime值类型表示值范围在公元(基督纪元)0001 年 1 月 1 日午夜 12:00:00 到公元
(C.E.) 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间。
[0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3}
JAVA获取当前年份,月份、日期、小时、分钟、秒等
JAVA获取当前年份,⽉份、⽇期、⼩时、分钟、秒等import java.util.Calendar;public class Main {public static void main(String[] args) {Calendar cal = Calendar.getInstance();int day = cal.get(Calendar.DATE);int month = cal.get(Calendar.MONTH) + 1;int year = cal.get(Calendar.YEAR);int dow = cal.get(Calendar.DAY_OF_WEEK);int dom = cal.get(Calendar.DAY_OF_MONTH);int doy = cal.get(Calendar.DAY_OF_YEAR);int hour = cal.get(Calendar.HOUR_OF_DAY);int minute = cal.get(Calendar.MINUTE);int second = calendar.get(Calendar.SECOND);System.out.println("当期时间: " + cal.getTime());System.out.println("⽇期: " + day);System.out.println("⽉份: " + month);System.out.println("年份: " + year);System.out.println("⼀周的第⼏天: " + dow); // 星期⽇为⼀周的第⼀天输出为 1,星期⼀输出为 2,以此类推System.out.println("⼀⽉中的第⼏天: " + dom);System.out.println("⼀年的第⼏天: " + doy);System.out.println("⼩时: " + hour);System.out.println("分钟: " + minute );System.out.println("秒: " + second );}}。
java处理节假日和工作时间的工具类
java处理节假⽇和⼯作时间的⼯具类import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.List;/*** 节假⽇⼯作时间处理* 假⽇只处理今年、去年的 1.1、5.1、10.1,和周末*/public class HolidayUtil {private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");private static SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");private static List<String> holidays = new ArrayList<String>();/*** 静态块初始化法定节⽇*/static {Calendar c = Calendar.getInstance();holidays.add(c.get(Calendar.YEAR)-1 + "-01-01");holidays.add(c.get(Calendar.YEAR)-1 + "-05-01");holidays.add(c.get(Calendar.YEAR)-1 + "-10-01");holidays.add(c.get(Calendar.YEAR) + "-01-01");holidays.add(c.get(Calendar.YEAR) + "-05-01");holidays.add(c.get(Calendar.YEAR) + "-10-01");}/*** 判断当天是否是节假⽇节⽇只包含1.1;5.1;10.1** @param date 时间* @return ⾮⼯作时间:true;⼯作时间:false*/public static boolean isHolidayOrFestival(Date date) {boolean result = false;boolean isHolidayTmp = isHoliday(date);if (isHolidayTmp) {result = true;} else {Calendar c = Calendar.getInstance();c.setTime(date);//周末直接为⾮⼯作时间if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY || c.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) { result = true;} else {//周内9点到17:30为⼯作时间int hour = c.get(Calendar.HOUR_OF_DAY);int minute = c.get(Calendar.MINUTE);if (hour < 9 || (hour == 17 && minute > 30) || hour >= 18) {result = true;}}}return result;}/*** ⾮⼯作时间获取最近的⼯作时间* @param date 时间* @return 返回处理后时间,格式:yyyy-MM-dd HH:mm:ss*/public static String getPreWorkDay(Date date) {Calendar c = Calendar.getInstance();c.setTime(date);if (!isHolidayOrFestival(date)) {return datechange(date, "yyyy-MM-dd HH:mm:ss");}//如果是周⽇最近的⼯作⽇为周五,⽇期减去2if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {c.add(Calendar.DAY_OF_MONTH, -2);}//如果是周六最近的⼯作⽇为周五,⽇期减去1else if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {c.add(Calendar.DAY_OF_MONTH, -1);}//如果是周⼀,并且为早上9点之前,最近的⼯作⽇为周五,⽇期减去3else if (c.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY) {int hour = c.get(Calendar.HOUR_OF_DAY);if (hour < 9) {c.add(Calendar.DAY_OF_MONTH, -3);}}else{int hour = c.get(Calendar.HOUR_OF_DAY);if (hour < 9) {c.add(Calendar.DAY_OF_MONTH, -1);}}c.set(Calendar.HOUR_OF_DAY, 17);c.set(Calendar.MINUTE, 30);c.set(Calendar.SECOND, 0);return datechange(c.getTime(), "yyyy-MM-dd HH:mm:ss"); }public static String datechange(Date date, String pattern) { SimpleDateFormat sdf = new SimpleDateFormat(pattern); String demo = sdf.format(date);return demo;}/*** 根据判断当前时间是否是节⽇** @param date* 时间* @return*/private static boolean isHoliday(Date date) {boolean result = false;String dateStr = sdf.format(date);if (holidays.size() > 0) {for (String holiday : holidays) {if (holiday.equals(dateStr)) {result = true;break;}}}return result;}public static void main(String[] args) throws ParseException { String d = "2017-07-20 18:31:58";System.out.println(getPreWorkDay(sdf1.parse(d)));}}。
【Java】【常用类】LocalDateTime当前日期时间类相关
【Java】【常⽤类】LocalDateTime当前⽇期时间类相关LocalDate主要的三个API类:java.time.LocalDate;java.time.LocalDateTime;java.time.LocalTime;LocatDate对象获取:@Testvoid contextLoads() {// 获取⽅式LocalDate localDate = LocalDate.now();System.out.println(localDate);LocalDate localDate1 = LocalDate.of(2020, 5, 23);System.out.println(localDate1);// 2020-09-28// 2020-05-23int year = localDate.getYear(); // 取年int monthValue = localDate.getMonthValue(); // 取⽉Month month = localDate.getMonth(); // 取⽉的枚举对象int monthValue1 = month.getValue(); // 具体值可以通过该枚举对象获取// 除此之外Month还有⼀些获取其他信息的⽅法int maxDaysLength = month.maxLength(); // 该⽉的最⼤天数int minDaysLength = month.minLength(); // 该⽉的最⼩天数int dayOfMonth = localDate.getDayOfMonth(); // 按当⽉取天数int dayOfYear = localDate.getDayOfYear(); // 按本年取天数DayOfWeek dayOfWeek = localDate.getDayOfWeek(); // 按本周取天数?// 和⽉枚举对象⼀样,这⾥也是⼀个周枚举对象int value = dayOfWeek.getValue();System.out.println(dayOfWeek); // 打印为 MONDAY ....}private static void cryptTest() {final String PASSWORD = "123456";PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();String encode = passwordEncoder.encode(PASSWORD);System.out.println(encode);boolean matches = passwordEncoder.matches(PASSWORD, encode);System.out.println(matches);}LocalDateTime & LocalTime:@Testvoid contextLoads() {LocalDateTime localDateTime1 = LocalDateTime.now();LocalDateTime localDateTime2 = LocalDateTime.of(2020, 2, 2, 13, 24, 52);System.out.println(localDateTime1); // 2020-09-28T16:01:48.248System.out.println(localDateTime2); // 2020-02-02T13:24:52LocalTime localTime1 = LocalTime.now();LocalTime localTime2 = LocalTime.of(20, 2, 2);System.out.println(localTime1); // 16:03:41.330System.out.println(localTime2); // 20:02:02int hour = localTime1.getHour();int minute = localTime1.getMinute();int second = localTime1.getSecond();int nano = localTime1.getNano();System.out.println("时 -> " + hour); // 时 -> 16System.out.println("分 -> " + minute); // 分 -> 6System.out.println("秒 -> " + second); // 秒 -> 26System.out.println("Nano -> " + nano); // Nano -> 206000000}GET⽅法SET⽅法增加时间减少时间public class DateTest {public static void main(String[] args) {LocalDate now1 = LocalDate.now();LocalTime now2 = LocalTime.now();LocalDateTime now3 = LocalDateTime.now();System.out.println("LocalDate.now() -> " + now1);System.out.println("LocalTime.now() -> " + now2);System.out.println("LocalDateTime.now() -> " + now3);/*LocalDate.now() -> 2020-04-19LocalTime.now() -> 21:16:03.854LocalDateTime.now() -> 2020-04-19T21:16:03.854*/LocalDateTime localDateTime = LocalDateTime.now();System.out.println("localDateTime.getDayOfWeek() -> " + localDateTime.getDayOfWeek() ); // 按周算天 System.out.println("localDateTime.getDayOfMonth() -> " + localDateTime.getDayOfMonth() ); // 按⽉算天 System.out.println("localDateTime.getDayOfYear() -> " + localDateTime.getDayOfYear() ); // 按年算天/*localDateTime.getDayOfWeek() -> SUNDAYlocalDateTime.getDayOfMonth() -> 19localDateTime.getDayOfYear() -> 110*/System.out.println( localDateTime.getSecond() );// 取秒System.out.println( localDateTime.getMinute() );// 取分System.out.println( localDateTime.getHour() );// 取时System.out.println( localDateTime.getMonth() );// 取⽉英⽂⼤写System.out.println( localDateTime.getMonthValue() );// 取⽉数值表⽰System.out.println( localDateTime.getYear() );// 取年// set × with √}}instant 瞬时时间,精度达到纳秒级public class DateTest {public static void main(String[] args) {Instant instant = Instant.now();System.out.println(instant);// 2020-04-19T13:47:58.712Z 本初⼦午线的标准时间// 我们是东⼋时区,添加8⼩时的偏移量OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));System.out.println(offsetDateTime);// 从实例获取毫秒数时间戳long epochMilli = instant.toEpochMilli();System.out.println(epochMilli);// 通过时间戳注⼊产⽣instant实例Instant epochMilli1 = Instant.ofEpochMilli(epochMilli);System.out.println(epochMilli1);}}DateTimeFormatterpublic class DateTest {public static void main(String[] args) {// 预定义的标准格式DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;// 事件对象LocalDateTime now = LocalDateTime.now();// 转换格式⽇期 -> 字符串格式String format = dateTimeFormatter.format(now);// 格式System.out.println( now );System.out.println( format );// ⽇期转字符串格式TemporalAccessor parse = dateTimeFormatter.parse("2020-03-19T22:09:46.345");System.out.println(parse);DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL);// ofLocalizedDateTime();// ofLocalizedDate(); 按Date就⽀持FULL全格式// ofPattern("⾃定义格式"); "yyyy-MM-dd hh:mm:ss"// FormatStyle.FULL 2020年4⽉19⽇星期⽇// FormatStyle.LONG 2020年4⽉19⽇下午10时15分01秒// FormatStyle.MEDIUM 2020-4-19 22:14:28// FormatStyle.SHORT 20-4-19 下午10:16String format1 = dateTimeFormatter1.format(now);System.out.println(now);System.out.println(format1);TemporalAccessor parse1 = dateTimeFormatter1.parse(format1); System.out.println(parse1);}}案例,制作⽇历:@Testvoid contextLoads() {localDateCalendar();}private static void localDateCalendar() {LocalDate now = LocalDate.now();int year = now.getYear();int month = now.getMonth().getValue();int dayOfMonth = now.getDayOfMonth();// 设置这个⽉的第⼀天now = now.minusDays(dayOfMonth - 1);// 找到这⼀天为周⼏int value = now.getDayOfWeek().getValue();// 开始渲染控制台输出样式System.out.println("Mon Tue Wed Thu Fri Sat Sun");for (int i = 1; i < value; i++) System.out.print(" ");while (now.getMonthValue() == month) {System.out.printf("%3d", now.getDayOfMonth());if (now.getDayOfMonth() == dayOfMonth) System.out.print("*");else System.out.print(" ");now = now.plusDays(1);if (now.getDayOfWeek().getValue() == 1) System.out.println();}if (now.getDayOfWeek().getValue() != 1) System.out.println();}打印结果:Mon Tue Wed Thu Fri Sat Sun1 2 3 4 5 67 8 9 10 11 12 1314 15 16 17 18 19 2021 22 23 24 25 26 2728* 29 30其他APIZoneIdZoneDateTimeClockDurationPeriodTemporalAdjusterTemporalAdjusters。
JAVA工程师月度考核评分表(标准版)
JAVA工程师月度考核评分表考核期间:年月备注:绩效考核得分90——100 考核系数1 85——89 0.980——84 0.870——79 0.760——69 0.660分以下 0绩效工资=绩效工资基数×绩效考核得分所对应的系数"""JAVA工程师月度考核评分表(标准版)使用说明考核目的与周期:考核目的:确保JAVA工程师的工作效率、专业技能、团队协作及工作态度的持续提升,为公司技术项目的顺利推进提供有力保障。
考核周期:本考核表按月进行,旨在及时反馈工程师的工作表现,促进即时调整与改进。
考核内容与权重:能力考核(80%):保证研发进度(25%):评估工程师是否按时完成研发任务,确保项目进度不受影响。
具体评分依据完成比例进行,量化数据如“按时完成研发要求0-25分”。
平台代码的编写(25%):强调代码编写的严谨性,确保无BUG且网站运行流畅。
通过网站运行状态(如流畅、有少量BUG但可运行、无法运行)来具体评分。
网站BUG处理(20%):关注工程师在网站出现BUG时的响应速度与修复能力,及时修复得满分,未能及时修复则为0分。
编写技术文档(15%):要求文档结构清晰、内容详细,便于团队内外成员的理解与协作。
文档结构混乱则为0分。
工作积极态度及主动性(10%):评估工程师的工作热情、责任心及提前完成任务、发现问题的能力,通过具体表现(如提前完成开发任务、发现细节性问题)来评分。
对业务的熟悉程度(5%):衡量工程师对业务流程及所开发功能作用的了解程度,熟悉程度越高得分越高。
行为考核(20%):团队合作(40%):评价工程师在团队中的协作精神,从积极协作到与同事保持关系,再到事不关己的态度,分为三个等级进行评分。
学习力(40%):考察工程师的学习态度与实践效果,从学习后实践并取得良好效果到仅有学习意识但无行动,同样分为三个等级。
遵守制度(20%):关注工程师对公司制度的遵守情况,根据违反次数及对公司利益的影响进行评分,细化到四个等级。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
pType = 12;
} else
if(iType == 5)
{
pType = 13;
}
Cal.add(pType, iCount);
SimpleDateFormat sdf = null;
if(iType <= 2)
sdf = new SimpleDateFormat("yyyy-MM-dd");
int min = ss / 60;
int hour = min / 60;
int day = hour / 24;
if(iType == 0)
return hour;
if(iType == 1)
return min;
if(iType == 2)
return day;
else
return -1;
int hh = 0;
int mi = 0;
int ss = 0;
if(baseDate.length() > 12)
{
hh = Integer.parseInt(baseDate.substring(11, 13));
mi = Integer.parseInt(baseDate.substring(14, 16));
public boolean isLeapYear(int yearNum){
boolean isLeep = false;
/**判断是否为闰年,赋值给一标识符flag*/
if((yearNum % 4 == 0) && (yearNum % 100 != 0)){
isLeep = true;
} else if(yearNum % 400 ==0){
isLeep = true;
} else {
isLeep = false;
}
return isLeep;
}
/*****************************************
* @功能 计算当前日期某年的第几周
int pType = 0;
if(iType == 0)
{
pType = 1;
} else
if(iType == 1)
{
pType = 2;
} else
if(iType == 2)
{
pType = 5;
} else
if(iType == 3)
{
pType = 10;
} else
{
SimpleDateFormat sdf = new SimpleDateFormat(strFormat);
String sDate = sdf.format(new Date());
return sDate;
}
/**
* @see 取得指定时间的给定格式()
* @return String
ss = Integer.parseInt(baseDate.substring(17, 19));
}
cal.set(yy, mm, dd, hh, mi, ss);
return cal;
}
public int getDay(String strDate)
{
Calendar cal = parseDateTime(strDate);
* @return interger
* @throws ParseException
****************************************/
public int getWeekNumOfYear(){
Calendar calendar = Calendar.getInstance();
* @throws ParseException
****************************************/
public int getWeekNumOfYearDay(String strDate ) throws ParseException{
Calendar calendar = Calendar.getInstance();
String sDate = sdf.format(new Date());
return sDate;
}
/**
* @see 按指定格式取得当前时间()
* @return String
*/
public String GetTimeFormat(String strFormat)
* @return String
*/
public String GetDate()
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String sDate = sdf.format(new Date());
return sDate;
else
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String sDate = sdf.format(Cal.getTime());
return sDate;
}
public String DateAdd(String strOption, int iDays, String strStartDate)
} catch (Exception e) {
}
return sDateTime;
}
public static Calendar parseDateTime(String baseDate)
{
Calendar cal = null;
cal = new GregorianCalendar();
import java.util.Calendar;
import java.util.GregorianCalendar;
/**
* 说明: 取日期时间工具
public class DateUtil { public Dat来自Util(){} /**
* @see 取得当前日期(格式为:yyyy-MM-dd)
* @throws ParseException
*/
public String SetDateFormat(String myDate,String strFormat) throws ParseException
{
SimpleDateFormat sdf = new SimpleDateFormat(strFormat);
int yy = Integer.parseInt(baseDate.substring(0, 4));
int mm = Integer.parseInt(baseDate.substring(5, 7)) - 1;
int dd = Integer.parseInt(baseDate.substring(8, 10));
}
/**
* @see 取得当前时间(格式为:yyy-MM-dd HH:mm:ss)
* @return String
*/
public static String GetDateTime()
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/*
* 创建日期 2010-04-19
*
* 功能 取日期时间工具
*
*/
package com.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date curDate = format.parse(strDate);
calendar.setTime(curDate);
int iWeekNum = calendar.get(Calendar.WEEK_OF_YEAR);
}
public int getWeekDay(String strDate)
{
Calendar cal = parseDateTime(strDate);
return cal.get(Calendar.DAY_OF_WEEK);
}
public String getWeekDayName(String strDate)
try {
Calendar Cal = parseDateTime(strDateTime);
SimpleDateFormat sdf = null;
sdf = new SimpleDateFormat(strFormat);
sDateTime = sdf.format(Cal.getTime());
{
Calendar cal = parseDateTime(strDate);
return cal.get(Calendar.YEAR) + 1900;