Java里面对日期格式的处理

合集下载

JDBC中日期时间的处理技巧

JDBC中日期时间的处理技巧

JDBC中日期时间的处理技巧在JDBC中处理日期时间是非常常见的需求,因为数据库中的许多数据都与日期和时间有关。

以下是一些处理日期时间字段的技巧:1. 日期时间的存储格式:在数据库中日期时间字段通常使用DATE、TIME、TIMESTAMP类型来存储。

在Java中,日期时间可以使用java.sql.Date、java.sql.Time、java.sql.Timestamp类分别表示。

通常数据库中使用TIMESTAMP类型来存储日期时间,因为它包含日期和时间信息。

2. 获取当前日期时间:可以使用new Date(来获取当前日期时间,new Date(会返回系统当前的日期时间。

如果只需要日期可以使用java.sql.Date currentDate = new Date(System.currentTimeMillis(),如果只需要时间可以使用java.sql.Time currentTime = newTime(System.currentTimeMillis()。

3. 将日期时间转换为字符串:在Java中可以使用SimpleDateFormat类将日期时间转换为字符串。

例如,可以使用以下代码将日期时间格式化为"yyyy-MM-dd HH:mm:ss"的字符串:```javaSimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-ddHH:mm:ss");String formattedDate = sdf.format(new Date();``````javaSimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date date = sdf.parse("2024-01-01");```5. 插入和查询日期时间字段:在JDBC中插入和查询日期时间字段时需要使用PreparedStatement,并通过setDate(、setTime(、setTimestamp(方法将Date对象传入。

Java中的日期和时间类以及Calendar类用法详解

Java中的日期和时间类以及Calendar类用法详解

Java中的⽇期和时间类以及Calendar类⽤法详解Java⽇期和时间类简介Java 的⽇期和时间类位于 java.util 包中。

利⽤⽇期时间类提供的⽅法,可以获取当前的⽇期和时间,创建⽇期和时间参数,计算和⽐较时间。

Date 类Date 类是 Java 中的⽇期时间类,其构造⽅法⽐较多,下⾯是常⽤的两个:Date():使⽤当前的⽇期和时间初始化⼀个对象。

Date(long millisec):从1970年01⽉01⽇00时(格林威治时间)开始以毫秒计算时间,计算 millisec 毫秒。

如果运⾏ Java 程序的本地时区是北京时区(与格林威治时间相差 8 ⼩时),Date dt1=new Date(1000);,那么对象 dt1 就是1970年01⽉01⽇08时00分01秒。

请看⼀个显⽰⽇期时间的例⼦:import java.util.Date;public class Demo{public static void main(String args[]){Date da=new Date(); //创建时间对象System.out.println(da); //显⽰时间和⽇期long msec=da.getTime();System.out.println("从1970年1⽉1⽇0时到现在共有:" + msec + "毫秒");}}运⾏结果:Mon Feb 05 22:50:05 CST 2007从1970年1⽉1⽇0时到现在共有:1170687005390 毫秒⼀些⽐较常⽤的 Date 类⽅法:Date 对象表⽰时间的默认顺序是星期、⽉、⽇、⼩时、分、秒、年。

若需要修改时间显⽰的格式可以使⽤“SimpleDateFormat(String pattern)”⽅法。

例如,⽤不同的格式输出时间:import java.util.Date;import java.text.SimpleDateFormat;public class Demo{public static void main(String args[]){Date da=new Date();System.out.println(da);SimpleDateFormat ma1=new SimpleDateFormat("yyyy 年 MM ⽉ dd ⽇ E 北京时间");System.out.println(ma1.format(da));SimpleDateFormat ma2=new SimpleDateFormat("北京时间:yyyy 年 MM ⽉ dd ⽇ HH 时 mm 分 ss 秒");System.out.println(ma2.format(-1000));}}运⾏结果:Sun Jan 04 17:31:36 CST 20152015 年 01 ⽉ 04 ⽇星期⽇北京时间北京时间:1970 年 01 ⽉ 01 ⽇ 07 时 59 分 59 秒Calendar 类抽象类 Calendar 提供了⼀组⽅法,允许把以毫秒为单位的时间转换成⼀些有⽤的时间组成部分。

JAVA处理日期时间常用方法

JAVA处理日期时间常用方法

JA V A处理日期时间常用方法:java.util.CalendarCalendar 类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期提供了一些方法。

瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间1970 年 1 月1 日的00:00:00。

000,格里高利历的偏移量.例:Calendar cal = Calendar。

getInstance(;//使用默认时区和语言环境获得一个日历。

cal。

add(Calendar.DAY_OF_MONTH, -1;//取当前日期的前一天。

cal。

add(Calendar。

DAY_OF_MONTH, +1;//取当前日期的后一天。

//通过格式化输出日期java.text.SimpleDateFormat format = new java.text。

SimpleDateFormat(”yyyy-MM—dd";System。

out.println("Today is:”+format。

format(Calendar.getInstance(.getTime (;System。

out.println("yesterday is:"+format.format(cal.getTime(;得到2007—12-25日期: Calendar calendar = new GregorianCalendar(2007,11, 25,0,0,0;Date date = calendar.getTime(;System。

out.println("2007 Christmasis:”+format.format(date;//java月份是从0—11,月份设置时要减1。

//GregorianCalendar构造方法参数依次为:年,月—1,日,时,分,秒。

Java使用DateTimeFormatter格式化输入的日期时间

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处理日期的工具类DateUtil

java处理日期的工具类DateUtil

java处理⽇期的⼯具类DateUtil java中处理⽇期的⼯具类DateUtil,供⼤家参考,具体内容如下package com.leo.demo.othertest;import org.slf4j.LoggerFactory;import java.sql.Timestamp;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.util.logging.Logger;/*** 时间⼯具类*/public final class DateUtil {private static Logger logger = (Logger) LoggerFactory.getLogger(DateUtil.class);/*** ⽇期格式*/public interface DATE_PATTERN {String HHMMSS = "HHmmss";String HH_MM_SS = "HH:mm:ss";String HH_MM = "HH:mm";String YYYY = "yyyy";String YYYYMMDD = "yyyyMMdd";String YYYYMM = "yyyyMM";String YYYY_MM_DD = "yyyy-MM-dd";String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";String YYYYMMDDHHMMSSSSS = "yyyyMMddHHmmssSSS";String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";}/*** 获取当前时间** @return Timestamp对象*/public static Timestamp getCurrontTime() {Timestamp sqlTimestamp = new Timestamp(new Date().getTime());return sqlTimestamp;}/*** 将Date类型转换成String类型** @param date Date对象* @return 形如:"yyyy-MM-dd HH:mm:ss"*/public static String date2String(Date date) {return date2String(date, DATE_PATTERN.YYYY_MM_DD_HH_MM_SS);}/*** 将Date按格式转化成String** @param date Date对象* @param pattern ⽇期类型* @return String*/public static String date2String(Date date, String pattern) {if (date == null || pattern == null) {return null;}return new SimpleDateFormat(pattern).format(date);}/*** 将String类型转换成Date类型** @param date Date对象* @return*/public static Date string2Date(String date) {SimpleDateFormat format = new SimpleDateFormat(DATE_PATTERN.YYYY_MM_DD_HH_MM_SS); try {return format.parse(date);} catch (ParseException e) {return null;}}/*** 获取某⽇期N天后的⽇期** @param datestr* @param day* @return*/public static Date getBeforeAfterDate(String datestr, int day) {SimpleDateFormat df = new SimpleDateFormat(DATE_PATTERN.YYYY_MM_DD_HH_MM_SS);java.sql.Date olddate = null;try {df.setLenient(false);olddate = new java.sql.Date(df.parse(datestr).getTime());} catch (ParseException e) {throw new RuntimeException("⽇期转换错误");}Calendar cal = new GregorianCalendar();cal.setTime(olddate);int Year = cal.get(Calendar.YEAR);int Month = cal.get(Calendar.MONTH);int Day = cal.get(Calendar.DAY_OF_MONTH);int NewDay = Day + day;cal.set(Calendar.YEAR, Year);cal.set(Calendar.MONTH, Month);cal.set(Calendar.DAY_OF_MONTH, NewDay);return new Date(cal.getTimeInMillis());}/*** @return* @Description: 获取当前⽇期的前⼀天* @ReturnType String* @author: liyl* @Created 2015年11⽉13⽇下午5:11:14*/public static Date currentBeforeDay() {Calendar calendar = Calendar.getInstance();calendar.setTime(new Date());calendar.add(Calendar.DAY_OF_MONTH, -1);return calendar.getTime();}/*** @return* @Description: 获取当前⽇期的后⼀天* @ReturnType Date* @author: liyl* @Created 2015年11⽉13⽇下午5:14:54*/public static Date currentNextDay() {Calendar calendar = Calendar.getInstance();calendar.setTime(new Date());calendar.add(Calendar.DAY_OF_MONTH, 1);return calendar.getTime();}/*** 获取指定⽇期星期⼏(int)** @param dt* @return*/public static int getWeekOfInt(Date dt) {int[] weekDays = {7, 1, 2, 3, 4, 5, 6};Calendar cal = Calendar.getInstance();cal.setTime(dt);int w = cal.get(Calendar.DAY_OF_WEEK) - 1;if (w < 0) {w = 0;}return weekDays[w];}/*** 获取指定⽇期星期⼏** @param dt* @return*/public static String getWeekOfDate(Date dt) {String[] weekDays = {"星期⽇", "星期⼀", "星期⼆", "星期三", "星期四", "星期五", "星期六"}; Calendar cal = Calendar.getInstance();cal.setTime(dt);int w = cal.get(Calendar.DAY_OF_WEEK) - 1;if (w < 0) {w = 0;}return weekDays[w];}/*** 时间⽐⼤⼩** @param DATE1* @param DATE2* @param pattern* @return*/public static int compareDate(String DATE1, String DATE2, String pattern) {DateFormat df = new SimpleDateFormat(pattern);try {Date dt1 = df.parse(DATE1);Date dt2 = df.parse(DATE2);if (dt1.getTime() > dt2.getTime()) {System.out.println("dt1 在dt2前");return 1;} else if (dt1.getTime() < dt2.getTime()) {System.out.println("dt1在dt2后");return -1;} else {return 0;}} catch (Exception exception) {exception.printStackTrace();}return 0;}/*** 在⼀个时间上加上或减去分钟** @param date long* @param i int* @return Date*/public static Date addOrMinusMinutes(Date date, int i) {Date rtn = null;GregorianCalendar cal = new GregorianCalendar();cal.setTime(date);cal.add(GregorianCalendar.MINUTE, i);rtn = cal.getTime();return rtn;}/*** 按照指定格式返回格式好的当前⽇期** @param dateFormat 默认yyyy-MM-dd* @return*/public static String getCurrentDateString(String dateFormat) {return DateUtil.format(new Date(), DATE_PATTERN.YYYY_MM_DD);}/*** 说明将⽇期格式化字符串,为null的返回空字符串** @param date* @return*/public static String format(Date date) {if (null == date) return "";SimpleDateFormat sf = new SimpleDateFormat(DATE_PATTERN.YYYY_MM_DD);return sf.format(date);}/*** 说明将⽇期格式化字符串,为null的返回空字符串** @param date ⽇期* @param dateFormat 格式化字符串,⽐如:yyyy-MM-dd* @return*/public static String format(Date date, String dateFormat) {if (null == dateFormat || "".equals(dateFormat)) return DateUtil.format(date);if (null == date) return "";SimpleDateFormat sf = new SimpleDateFormat(dateFormat);return sf.format(date);}/*** @param source 要进⾏解析的源字符串* @return* @说明将指定的字符串格解析成⽇期类型,格式默认为:yyyy-MM-dd*/public static Date parase(String source) {SimpleDateFormat sf = new SimpleDateFormat(DATE_PATTERN.YYYY_MM_DD);try {return sf.parse(source);} catch (ParseException e) {e.printStackTrace();}return null;}/*** @param source 要进⾏解析的源字符串* @param dateFormat 要解析的⽇期格式。

Java将Date日期类型字段转换成json字符串的方法

Java将Date日期类型字段转换成json字符串的方法

Java将Date⽇期类型字段转换成json字符串的⽅法想必我们在做项⽬的时候,都会遇到服务端与客户端交互数据。

⼀般情况下我们都会采⽤json格式或者xml格式,将服务端的数据转换成这两种格式之⼀。

但是,如果我们将数据转换成json格式的时候,我们也许会遇到Date⽇期型的数据转换成json格式后,并不是我们想要的格式。

下⾯我们通过简单的demo来说明这个问题。

我们按照⼀般json格式⽣成,会出现以下问题:采⽤json:将数据⽣成json格式,需要导⼊相应的jar包,如下图:Student.javapackage com.xbmu.bean;import java.io.Serializable;import java.util.Date;public class Student implements Serializable {private String username;private Date birthday;public Student() {super();// TODO Auto-generated constructor stub}public Student(String username, Date birthday) {super();ername = username;this.birthday = birthday;}public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}@Overridepublic String toString() {return "Student [username=" + username + ", birthday=" + birthday + "]";}}TestDateValueToJson.javapackage com.xbmu.test;import java.util.ArrayList;import java.util.Date;import java.util.List;import net.sf.json.JSONArray;import com.xbmu.bean.Student;public class TestDateValueToJson {public static void main(String[] args) {/*** 创建三个student对象,并将对象添加到List集合中** */List<Student> list = new ArrayList<Student>();Student student = new Student("张三", new Date());list.add(student);student = new Student("李四",new Date());list.add(student);student = new Student("王五",new Date());list.add(student);/**将list集合众的数据转换成json格式的字符串形式*/JSONArray array = new JSONArray();array = array.fromObject(list);System.out.println(array.toString());运⾏Java应⽤程序,看见在控制台是哪个打印出了:(这⾥通过json格式化⼯具处理后了,⽅便⼤家阅读)[{"birthday": {"date": 3,"day": 4,"hours": 9,"minutes": 5,"month": 11,"seconds": 1,"time": 1449104701018,"timezoneOffset": -480,"year": 115},"username": "张三"},{"birthday": {"date": 3,"day": 4,"hours": 9,"minutes": 5,"month": 11,"seconds": 1,"time": 1449104701018,"timezoneOffset": -480,"year": 115},"username": "李四"},{"birthday": {"date": 3,"day": 4,"hours": 9,"minutes": 5,"month": 11,"seconds": 1,"time": 1449104701018,"timezoneOffset": -480,"year": 115},"username": "王五"}]虽然符合json语法格式,但是⾥⾯的birthday字段是⽇期型的,并不是我们⼀般情况下需要的。

JDBC中日期时间的处理技巧

JDBC中日期时间的处理技巧
Java中用类java.util.Date对日期/时间做了封装,此类提供了对年、月、日、时、分、秒、毫秒以及时区的控制方法,同时也提供一些工具方法,比如日期/时间的比较,前后判断等。
java.util.Date中采用一个long型的数来保存日期/时间,它表示从格林威治时间1970年1月1日00点00分00秒至今的毫秒数。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = sdf.format(utilDate);
这样也可以达到最终目的,但是有点问题,java.sql.Timestamp是继承java.util.Date的,因此format的时候直接传入timeStamp即可,没有必要临时创建一个utilDate。像下面这样就可以了:
熟悉oracle的人都知道,TO_Date是oracle里的函数,其他数据库没有,即使有也很可能不一样。那么这段代码只能用在oracle上,如果换成其他数据库,程序就无法执行了。
如果采用PreparedStatement,代码是这样:
Connection conn;//前面的步骤略
PreparedStatement pstmt = conn.prepareStatement("insert into tab ( begin_date ) values( ?)");
pstmt.setTimestamp(1, new Timestamp(System.currentTimeMillis()));
pstmt.execute();
可以看出来,这段代码与数据库无关,只要是支持标准sql的数据库都没有问题。

java美式时间格式,日期操作类(DateFormat与SimpleDateFormat)。。。

java美式时间格式,日期操作类(DateFormat与SimpleDateFormat)。。。

java美式时间格式,⽇期操作类(DateFormat与SimpleDateFormat)。

1.DateFormat类此类是⼀个⽇期的格式化类,专门格式化⽇期的操作,因为java.util.Date类本⾝就已经包含了完整的⽇期,所以只需要将些⽇期按照⼀些好的格式格式化⼀下显⽰就好了.观察DateFormat类的定义:此类是定义在java.test包中的。

public abstract class DateFormat extends Format但是定义上可以发现,此类是⼀个抽象类,按照以住的思路,直接使⽤其⼦类实例化即可,但是DateFormat 类本⾝的内部提供了可以直接为其实例化的操作。

得到⽇期的DateFormat对象:public static final DateFormat getDateInstance()得到⽇期时间的DateFormat对象:public static final DateFormat getDateTimeInstance()直接使⽤DateFormat类完成Date类的转换功能:public final String format(Date date)美式⽇期格式12345678910111213import java.text.DateFormat ;import java.util.Date ;public class DateDemo03{public static void main(String args[]){DateFormat df1 =null ;// 声明⼀个DateFormatDateFormat df2 =null ;// 声明⼀个DateFormatdf1 = DateFormat.getDateInstance() ;// 得到⽇期的DateFormat对象df2 = DateFormat.getDateTimeInstance() ;// 得到⽇期时间的DateFormat对象System.out.println("DATE:" + df1.format(new Date())) ;// 按照⽇期格式化System.out.println("DATETIME:" + df2.format(new Date())) ;// 按照⽇期时间格式化}};中式⽇期格式(通过Locale对象指定要显⽰的区域,指定的区域是中国)importjava.text.DateFormat ;importjava.util.Date ;importjava.util.Locale ;publicclassDateDemo04{publicstaticvoidmain(String args[]){DateFormat df1 = null;// 声明⼀个DateFormatDateFormat df2 = null;// 声明⼀个DateFormatdf1 = DateFormat.getDateInstance(DateFormat.YEAR_FIELD,newLocale("zh","CN")) ;// 得到⽇期的DateFormat对象df2 = DateFormat.getDateTimeInstance(DateFormat.YEAR_FIELD,DateFormat.ERA_FIELD,newLocale("zh","CN")) ;// 得到⽇期时间的DateFormat对象System.out.println("DATE:"+ df1.format(newDate())) ;// 按照⽇期格式化System.out.println("DATETIME:"+ df2.format(newDate())) ;// 按照⽇期时间格式化}}; 2.SimpleDateFormat类此类的功能是完成⽇期的显⽰格式化的,例如,在开发中,可以会将⼀种⽇期格式变为另外⼀种⽇期格式,如下所⽰:原始⽇期:2008-10-19 10:11:30.345转换捕⽇期:2008 年 10 ⽉ 19 ⽇ 10 点 11 分 30 秒 345 毫秒但是以上的两个⽇期中⽇期的数字是完全⼀样的,唯⼀不同的是⽇期的显⽰格式不同,所以要想实现这样的转换功能就必须依靠SimpleDateFormat类。

Java日期格式加上指定月数(一个期限)得到一个新日期的实现代码

Java日期格式加上指定月数(一个期限)得到一个新日期的实现代码

Java⽇期格式加上指定⽉数(⼀个期限)得到⼀个新⽇期的实现代码下⾯⼀段实例代码给⼤家介绍java⽇期格式加上指定⽉数得到⼀个新⽇期,具体代码如下所⽰:public static Date getnewDate(Date olddate, String recordDate) throws ParseException {Date date = olddate;SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");String data = format.format(date);String dataStr[] = data.split("-");//年份int year = (Integer.parseInt(dataStr[1]) + Integer.parseInt(recordDate))/12;//⽉份int yue = (Integer.parseInt(dataStr[1]) + Integer.parseInt(recordDate))%12;String a = "";if(yue<10){if(yue<1){a = "12";}else{a = "0"+yue;}}else {a = yue+"";}dataStr[0]=String.valueOf(Integer.parseInt(dataStr[0]) + year);dataStr[1]=a;String newdata = dataStr[0]+"-"+dataStr[1]+"-"+dataStr[2];Date newDate = format.parse(newdata);return newDate;}下⾯给⼤家补充介绍Java中⼀个指定⽇期加上指定天数得到新⽇期的实现代码package com.date.test;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class Test {public static void main(String[] args) throws ParseException {SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); // ⽇期格式Date date = dateFormat.parse("2015-07-31"); // 指定⽇期Date newDate = addDate(date, 20); // 指定⽇期加上20天System.out.println(dateFormat.format(date));// 输出格式化后的⽇期System.out.println(dateFormat.format(newDate));}public static Date addDate(Date date,long day) throws ParseException {long time = date.getTime(); // 得到指定⽇期的毫秒数day = day*24*60*60*1000; // 要加上的天数转换成毫秒数time+=day; // 相加得到新的毫秒数return new Date(time); // 将毫秒数转换成⽇期}}。

java日期格式Date,Timestamp存入数据库

java日期格式Date,Timestamp存入数据库
不知道是怎么存储的想要检索内容但是保存时候生成的是图片没法搜索
java日期格式 Date,Timestamp存入数据库
java获取取得Timestamp类型的当前系统时间 格式:yyyy-MM-dd HH:mm:ss 精确值:2019-01-04 11:19:22 方法1:
Timestamp t = new Timestamp(System.currentTimeMillis()); preparedStatement.setTimestamp(1,t);
方法2:
Date date = new Date(); Timestamp t= new Timestamp(date.getTime()); preparedStatement.setTimestamp(1,t);
说明:java.sql.Date 只存储日期数据不存储时间数据
// 会丢失时间数据 preparedStatement.setDate(1, new java.sql.Date(date.getTime())); //可以这样来处理 preparedStatement.setTimestamp(1, new java.sql.Timestamp(new java.util.Date().完整的数据,包括日期和时间,可以这样 java.util.Date d = resultSet.getTimestamp(1); //这样处理更合适一些,可以避免一些潜在Timestamp 问题 java.util.Date d = new java.util.Date(resultSet.getTimestamp(1).getTime());

Java对日期Date类进行加减运算、年份加减月份加减、时间差等等

Java对日期Date类进行加减运算、年份加减月份加减、时间差等等

Java对⽇期Date类进⾏加减运算、年份加减⽉份加减、时间差等等实现代码⼀:import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class DateTestUtil {public static void main(String[] args) throws Exception {SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");String str="20110823";Date dt=sdf.parse(str);Calendar rightNow = Calendar.getInstance();rightNow.setTime(dt);rightNow.add(Calendar.YEAR,-1);//⽇期减1年rightNow.add(Calendar.MONTH,3);//⽇期加3个⽉rightNow.add(Calendar.DAY_OF_YEAR,10);//⽇期加10天Date dt1=rightNow.getTime();String reStr = sdf.format(dt1);System.out.println(reStr);}}注:在Calendar对象的add⽅法中,第⼆个参数为正数表⽰“加”,负数表⽰“减”。

代码⼆: java date ⽇期加减天数测试类代码:import java.text.SimpleDateFormat;import java.util.Date;public class DateTest {public static void main(String[] arg){Date now = new Date();addAndSubtractDaysByGetTime(now,-5);addAndSubtractDaysByGetTime(now,5);addAndSubtractDaysByCalendar(now,-5);addAndSubtractDaysByCalendar(now,5);}public static Date addAndSubtractDaysByGetTime(Date dateTime/*待处理的⽇期*/,int n/*加减天数*/){//⽇期格式SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");SimpleDateFormat dd=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");System.out.println(df.format(new Date(dateTime.getTime() + n * 24 * 60 * 60 * 1000L)));//System.out.println(dd.format(new Date(dateTime.getTime() + n * 24 * 60 * 60 * 1000L)));//注意这⾥⼀定要转换成Long类型,要不n超过25时会出现范围溢出,从⽽得不到想要的⽇期值return new Date(dateTime.getTime() + n * 24 * 60 * 60 * 1000L);}public static Date addAndSubtractDaysByCalendar(Date dateTime/*待处理的⽇期*/,int n/*加减天数*/){//⽇期格式SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");SimpleDateFormat dd=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");java.util.Calendar calstart = java.util.Calendar.getInstance();calstart.setTime(dateTime);calstart.add(java.util.Calendar.DAY_OF_WEEK, n);System.out.println(df.format(calstart.getTime()));//System.out.println(dd.format(calstart.getTime()));return calstart.getTime();}}运⾏结果:2014-10-062014-10-162014-10-062014-10-16代码三:在⽹上查阅资料,加上⾃⼰总结的⼀些关于Date类的⼯具类。

vo中对date格式的时间格式的处理,方便到前台展示

vo中对date格式的时间格式的处理,方便到前台展示

vo中对date格式的时间格式的处理,⽅便到前台展⽰之前⼀个同事的写法是这样的(绿⾊的):public static final String GENERAL_PATTERN_2 = "yyyy-MM-dd HH:mm:ss";其实没必要这样,在vo⾥⾯的set⽅法做个赋值:SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");这样不⾏,因为这⾥的createtime是string的,不能这样写(如果createtime属性是Date类型,给String类型的createtimeStr 属性赋值可以这样写,createtimeStr这个字段值常⽤于前端展⽰~ 不⽤再在前端处理),写了访问报500错:那就这样写:public String getCreatetime() {try {return DateUtils.getStringDate(DateUtils.stringToDate(createtime, DateUtil.GENERAL_PATTERN_2));} catch (ParseException e) {e.printStackTrace();}return createtime;}重要⼯具类DateUtils.java具体代码如下import java.math.BigDecimal;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;public class DateUtils {private static final int BIN_DIGITS = 12;public static final short ONE_MS = 1 << BIN_DIGITS;public static String getDatePattern() {return "yyyy-MM-dd";}public static String getTimePattern() {return "yyyy-MM-dd HH:mm:ss";}public static String getDatePattern8() {return "yyyyMMdd";}public static String getTimePattern14() {return "yyyyMMddHHmmss";}public static Date getDateTime(Date date, String format) throws ParseException {SimpleDateFormat df = new SimpleDateFormat(format);String strDate = df.format(date);Calendar cal = new GregorianCalendar();cal.setTime(stringToDate(strDate, format));return cal.getTime();}public static int getYear() {return Calendar.getInstance().get(Calendar.YEAR);}public static int getYear(Date date) {Calendar cal = new GregorianCalendar();cal.setTime(date);return cal.get(Calendar.YEAR);}public static int getMonth() {return Calendar.getInstance().get(Calendar.MONTH) + 1;}public static int getMonth(Date date) {Calendar cal = new GregorianCalendar();cal.setTime(date);return cal.get(Calendar.MONTH) + 1;}public static int getDayOfMonth() {return Calendar.getInstance().get(Calendar.DAY_OF_MONTH);}public static int getDayOfMonth(Date date) {Calendar cal = new GregorianCalendar();cal.setTime(date);return cal.get(Calendar.DAY_OF_MONTH);}public static final Date stringToDate(String strDate, String format) throws ParseException { SimpleDateFormat df = null;Date date = null;df = new SimpleDateFormat(format);try {date = df.parse(strDate);} catch (ParseException pe) {throw new ParseException(pe.getMessage(), pe.getErrorOffset());}return (date);}public static Date stringToDate(String strDate) throws ParseException {Date aDate = null;try {aDate = stringToDate(strDate, getDatePattern());} catch (ParseException pe) {pe.printStackTrace();throw new ParseException(pe.getMessage(), pe.getErrorOffset());}return aDate;}public static final String dateToString(Date aDate, String format) {SimpleDateFormat df = null;String returnValue = "";if (aDate == null) {//} else {df = new SimpleDateFormat(format);returnValue = df.format(aDate);}return (returnValue);}public static final String getStringDate(Date date) {SimpleDateFormat format1 = new SimpleDateFormat("yyyy年MM⽉dd⽇ HH时mm分ss秒");return format1.format(date.getTime());}public static final String dateToString(Date aDate) {return dateToString(aDate, getDatePattern());}public static final String timeToString(Date aDate) {return dateToString(aDate, getTimePattern());}public static Date getDate(Date aDate) throws ParseException {return getDateTime(aDate, getDatePattern());}public static Date getTime(Date aDate) throws ParseException {return getDateTime(aDate, getTimePattern());}public static long getDaysBetween(Date dtFrom, Date dtEnd) {long begin = dtFrom.getTime();long end = dtEnd.getTime();long inter = end - begin;if (inter < 0) {inter = inter * (-1);}long dateMillSec = 24 * 60 * 60 * 1000;long dateCnt = inter / dateMillSec;long remainder = inter % dateMillSec;if (remainder != 0) {dateCnt++;}return dateCnt;}public static long getMinsBetween(Date dtFrom, Date dtEnd) {long begin = dtFrom.getTime();long end = dtEnd.getTime();long inter = end - begin;return inter / 60000;}public static String getLastDateOfyearAndMonth(String yearAndMonth) throws Exception {String start = yearAndMonth + "01";Date startDate = DateUtils.stringToDate(start, "yyyyMMdd");Calendar calendar = Calendar.getInstance();calendar.setTime(startDate);calendar.add(Calendar.MONTH, 1);calendar.add(Calendar.DAY_OF_MONTH, -1);String end = DateUtils.dateToString(calendar.getTime(), "yyyyMMdd");return end;}public static String getNextMonthString(String strDate, String format) throws ParseException { Date date = stringToDate(strDate, format);Calendar cal = new GregorianCalendar();cal.setTime(date);cal.add(Calendar.MONTH, 1);return dateToString(cal.getTime(), format);}/*** 获取上个⽉的最后⼀天** @param date* @return* @throws ParseException*/public static Date getLastDayOfLastMonth(Date date) throws ParseException {String str_firstDay = dateToString(date, "yyyyMM") + "01";Date date_firstDay = stringToDate(str_firstDay, "yyyyMMdd");if (date_firstDay != null) {Calendar cal = Calendar.getInstance();cal.setTime(date_firstDay);cal.add(Calendar.DAY_OF_MONTH, -1);return cal.getTime();}return null;}/*** 获取上个⽉的最后⼀天** @param date* @return* @throws ParseException*/public static String getLastDayOfLastMonth(Date date, String format) throws ParseException { return dateToString(getLastDayOfLastMonth(date), format);}/*** 获取传⼊时间所在⽉的最后⼀天** @param date* @return*/public static int getLastDay(Date date) {Calendar calendar = Calendar.getInstance();calendar.set(Calendar.DAY_OF_MONTH, 1);calendar.add(Calendar.MONTH, 1);calendar.add(Calendar.DAY_OF_MONTH, -1);return calendar.get(Calendar.DAY_OF_MONTH);}/*** 获取指定时间下个⽉的第⼀天零时00:00:00** @param date* @return*/public static Date getNextMonthFirstDay(Date date) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);calendar.add(Calendar.MONTH, 1);calendar.set(Calendar.DAY_OF_MONTH, 1);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);return calendar.getTime();}public static Date getMonthLastDay(Date date) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);calendar.add(Calendar.MONTH, 1);calendar.set(Calendar.DAY_OF_MONTH, 1);calendar.add(Calendar.DAY_OF_MONTH, -1);calendar.set(Calendar.HOUR_OF_DAY, 23);calendar.set(Calendar.MINUTE, 59);calendar.set(Calendar.SECOND, 59);return calendar.getTime();}/*** 获取⼀个⽉的开始时间** @param date* @return*/public static Date getMonthFirstDay(Date date) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);calendar.set(Calendar.DAY_OF_MONTH, 1);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(LISECOND, 0);return calendar.getTime();}/*** 当前时间是否在抽奖的有效时间内** @return*/public static boolean raffleEffectiveTime() {boolean effective = false;try {Date begin = DateUtils.stringToDate("20130701000000", "yyyyMMddHHmmss");Date end = DateUtils.stringToDate("20131001000000", "yyyyMMddHHmmss");Date current = new Date();if (pareTo(begin) == 1 && pareTo(end) == -1) {return true;}} catch (ParseException e) {e.printStackTrace();}return effective;}/*** 将源格式字符串⽇期转换成⽬标格式字符串⽇期** @param origStrDate 字符串⽇期* @param origFormat 源格式* @param destFormat ⽬标格式* @return* @throws ParseException*/public static final String dateStrToString(String origStrDate, String origFormat, String destFormat) throws ParseException { Date origDate = stringToDate(origStrDate, origFormat);return dateToString(origDate, destFormat);}// 季度⼀年四季,第⼀季度:2⽉-4⽉,第⼆季度:5⽉-7⽉,第三季度:8⽉-10⽉,第四季度:11⽉-1⽉private static int getQuarterInMonth(int month, boolean isQuarterStart) {int months[] = { 1, 4, 7, 10 };if (!isQuarterStart) {months = new int[] { 3, 6, 9, 12 };}if (month >= 2 && month <= 4)return months[0];else if (month >= 5 && month <= 7)return months[1];else if (month >= 8 && month <= 10)return months[2];elsereturn months[3];}// 获得本周⼀与当前⽇期相差的天数public static int getMondayPlus() {Calendar cd = Calendar.getInstance();int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK);if (dayOfWeek == 1) {return -6;} else {return 2 - dayOfWeek;}}// 获得当前周- 周⼀的⽇期public static Date getCurrentMonday() {Calendar cal = Calendar.getInstance();cal.setTime(getThisWeekMonday(new Date()));cal.add(Calendar.DATE, -7);return cal.getTime();}public static Date getThisWeekMonday(Date date) {Calendar cal = Calendar.getInstance();cal.setTime(date);// 获得当前⽇期是⼀个星期的第⼏天int dayWeek = cal.get(Calendar.DAY_OF_WEEK);if (1 == dayWeek) {cal.add(Calendar.DAY_OF_MONTH, -1);}// 设置⼀个星期的第⼀天,按中国的习惯⼀个星期的第⼀天是星期⼀cal.setFirstDayOfWeek(Calendar.MONDAY);// 获得当前⽇期是⼀个星期的第⼏天int day = cal.get(Calendar.DAY_OF_WEEK);// 根据⽇历的规则,给当前⽇期减去星期⼏与⼀个星期第⼀天的差值cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);return cal.getTime();}/*** 获得当⽉起始时间** @return*/public static Date getStartMounth(Date date) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);calendar.set(Calendar.DAY_OF_MONTH, 1);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(LISECOND, 0);return calendar.getTime();}/*** 获取当前季度起始时间** @return*/public static Date getStartQuarter(Date date) {SimpleDateFormat longSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");SimpleDateFormat shortSdf = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();int currentMonth = c.get(Calendar.MONTH) + 1;Date now = null;try {if (currentMonth >= 1 && currentMonth <= 3)c.set(Calendar.MONTH, 0);else if (currentMonth >= 4 && currentMonth <= 6)c.set(Calendar.MONTH, 3);else if (currentMonth >= 7 && currentMonth <= 9)c.set(Calendar.MONTH, 4);else if (currentMonth >= 10 && currentMonth <= 12)c.set(Calendar.MONTH, 9);c.set(Calendar.DATE, 1);now = longSdf.parse(shortSdf.format(c.getTime()) + " 00:00:00");} catch (Exception e) {e.printStackTrace();}return now;}/*** 获取当年起始时间*/public static Date getStartYear(Date date) {Calendar currCal = Calendar.getInstance();int currentYear = currCal.get(Calendar.YEAR);return getYearFirst(currentYear);}/*** 获取某年第⼀天⽇期** @param year 年份* @return Date*/public static Date getYearFirst(int year) {Calendar calendar = Calendar.getInstance();calendar.clear();calendar.set(Calendar.YEAR, year);Date currYearFirst = calendar.getTime();return currYearFirst;}public static void main(String[] args) throws ParseException {// boolean effective=false;// try {// Date d=getMonthFirstDay(new Date());// System.out.println(DateUtils.dateToString(d, "yyyyMMddHHmmsswww"));// } catch (Exception e) {// e.printStackTrace();// }Date receiveTime = DateUtils.stringToDate("20131226", "yyyyMMdd");Calendar calendar = Calendar.getInstance();calendar.setTime(receiveTime);int week = calendar.get(Calendar.DAY_OF_WEEK);if (week < Calendar.WEDNESDAY) {calendar.add(Calendar.DATE, -14);} else {calendar.add(Calendar.DATE, -7);}calendar.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);Date effectiveStart = calendar.getTime();Date effectiveEnd = receiveTime;System.out.println(DateUtils.dateToString(effectiveStart, "yyyyMMddHHmmsswww")); System.out.println(DateUtils.dateToString(effectiveEnd, "yyyyMMddHHmmsswww")); }/*** 获取两个时间秒差数(带毫秒数)** @param dtFrom* @param dtEnd* @return*/public static double getSecsBetweenD(Date dtFrom, Date dtEnd) {BigDecimal begin = new BigDecimal(dtFrom.getTime());BigDecimal end = new BigDecimal(dtEnd.getTime());BigDecimal inter = end.subtract(begin);return inter.divide(new BigDecimal("1000")).doubleValue();}}。

java日期的格式校验

java日期的格式校验

java⽇期的格式校验第⼀种思路:格式:MM/dd/yyyy HH:mm:ss\d{1,2}/\d{1,2}/\d{4}(\s\d{1,2}:\d{1,2}:\d{1,2})?2019/12/12 11:11:11\d{4}/\d{1,2}/\d{1,2}(\s\d{1,2}:\d{1,2}:\d{1,2})?2017-04-31 11:00:00^(\d{4})-([0-1]\d)-([0-3]\d)\s([0-5]\d):([0-5]\d):([0-5]\d)$实现://校验时间 2019/12/12 11:11:11String serviceReg="\\d{4}/\\d{1,2}/\\d{1,2}(\\s\\d{1,2}:\\d{1,2}:\\d{1,2})?";if(StringUtils.isNotBlank(serviceStartTime)){boolean checkServiceStartTime = serviceStartTime.matches(serviceReg);if(!checkServiceStartTime){archivesSaleInfoImport.setImportFailReason("包含不合法的服务期限");failList.add(archivesSaleInfoImport);continue;}}if(StringUtils.isNotBlank(serviceEndTime)){boolean checkServiceEndTime = serviceEndTime.matches(serviceReg);if(!checkServiceEndTime){archivesSaleInfoImport.setImportFailReason("包含不合法的服务期限");failList.add(archivesSaleInfoImport);continue;}}另⼀种思路:public static boolean isValidDate(String str) {boolean convertSuccess=true; // 指定⽇期格式为四位年/两位⽉份/两位⽇期,注意yyyy/MM/dd区分⼤⼩写;SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm");try { // 设置lenient为false. 否则SimpleDateFormat会⽐较宽松地验证⽇期,⽐如2007/02/29会被接受,并转换成2007/03/01 format.setLenient(false);format.parse(str);} catch (ParseException e) {// e.printStackTrace();// 如果throw java.text.ParseException或者NullPointerException,就说明格式不对convertSuccess=false;}return convertSuccess;}基于Jdk1.8线程安全的校验:try {String date = "2021/11/30 11:11:59";final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");LocalDateTime dateTime = LocalDateTime.parse(date, DATE_TIME_FORMATTER);// LOCAL_DATE_FORMAT.get().parse(date);System.out.println(dateTime.toString().replaceAll("T"," "));} catch (DateTimeParseException e) {System.out.println(e);}。

Java使用DateUtils对日期进行数学运算经典应用示例【附DateUtils相关包文件下载】

Java使用DateUtils对日期进行数学运算经典应用示例【附DateUtils相关包文件下载】

Java使⽤DateUtils对⽇期进⾏数学运算经典应⽤⽰例【附DateUtils相关包⽂件下载】本⽂实例讲述了Java使⽤DateUtils对⽇期进⾏数学运算的⽅法。

分享给⼤家供⼤家参考,具体如下:最近在写数据上传的程序,需要对Date进⾏⼀些数学运算,个⼈感觉在java中,⽇期的数学运算还是⽐较常⽤的,所以把Date的数学运算都玩了⼀下。

试了⼀下,发现DateUtils这个⼯具类对于Date的数学运算⾮常⽅便,见代码吧。

package date;import java.text.SimpleDateFormat;import java.util.Date;import ng3.time.DateUtils;public class DateCalculate {/*** ⽇期格式的运算* @param args*/public static void main(String[] args) {System.out.println("测试结果:");Date now = new Date();SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");System.out.println("------当前时间--------:" + sd.format(now));//年: 加、减操作System.out.println("1年之后:"+sd.format(DateUtils.addYears(now, 1)));System.out.println("1年之前:"+sd.format(DateUtils.addYears(now, -1)));//⽉: 加、减操作System.out.println("1个⽉之后:"+sd.format(DateUtils.addMonths(now, 1)));System.out.println("1个⽉之前:"+sd.format(DateUtils.addMonths(now, -1)));//周: 加、减操作System.out.println("1周之后:"+sd.format(DateUtils.addWeeks(now, 1)));System.out.println("1周之前:"+sd.format(DateUtils.addWeeks(now, -1)));//天: 加、减操作System.out.println("昨天的这个时候:" + sd.format(DateUtils.addDays(now, -1)));System.out.println("明天的这个时候:" + sd.format(DateUtils.addDays(now, 1)));//⼩时: 加、减操作System.out.println("1⼩时后:" + sd.format(DateUtils.addHours(now, 1)));System.out.println("1⼩时前:" + sd.format(DateUtils.addHours(now, -1)));//分钟: 加、减操作System.out.println("1分钟之后:"+sd.format(DateUtils.addMinutes(now, 1)));System.out.println("1分钟之前:"+sd.format(DateUtils.addMinutes(now, -1)));//秒: 加、减操作System.out.println("10秒之后:"+sd.format(DateUtils.addSeconds(now, 10)));System.out.println("10秒之前:"+sd.format(DateUtils.addSeconds(now, -10)));//毫秒: 加、减操作System.out.println("1000毫秒之后:"+sd.format(DateUtils.addMilliseconds(now, 1000)));System.out.println("1000毫秒之前:"+sd.format(DateUtils.addMilliseconds(now, -1000)));}}运⾏结果:注意:代码中引⼊了ng3.time.DateUtils;,直接运⾏程序会报错!读者可到官⽹提供的类库下载地址下载相应的组件,也可点击此处。

时间格式转换及常用时间处理

时间格式转换及常用时间处理
return ctime;
}
public static String getWeek(){
SimpleDateFormat formatter;
formatter = new SimpleDateFormat ("E");
String ctime = formatter.format(new Date());
}
/**
* 将java.util.Date 格式转换为字符串格式'yyyy-MM-dd HH:mm:ss a'(12小时制)<br>
* 如Sat May 11 17:23:22 CST 2002 to '2002-05-11 05:23:22 下午'<br>
* @param time Date 日期<br>
* 如Sat May 11 17:24:21 CST 2002 to '2002-05-11 17:24:21'<br>
* @param time Date 日期<br>
* @return String 字符串<br>
*/
public static String dateToString(Date time){
return ctime;
}
public static String getDay(){
SimpleDateFormat formatter;
formatter = new SimpleDateFormat ("d");
String ctime = formatter.format(new Date());

java 年月日正则表达式

java 年月日正则表达式

java 年月日正则表达式
在Java中,可以使用正则表达式来验证日期格式。

以下是一个示例正则表达式,用于匹配年月日格式:
```java
String regex = "^(\\d{4})-(\\d{2})-(\\d{2})$";
```
这个正则表达式的含义是:
`^` 表示字符串的开头
`(\\d{4})` 表示匹配4位数字,即年份
`-` 表示匹配连字符
`(\\d{2})` 表示匹配2位数字,即月份
`-` 表示匹配连字符
`(\\d{2})` 表示匹配2位数字,即日期
`$` 表示字符串的结尾
你可以使用这个正则表达式来验证一个字符串是否符合年月日格式。

例如:
```java
String date = "";
String regex = "^(\\d{4})-(\\d{2})-(\\d{2})$";
boolean isValid = (regex);
```
在这个示例中,`isValid` 变量将为 `true` 如果 `date` 字符串符合年月日格式,否则为 `false`。

java rfc3339标准格式

java rfc3339标准格式

Java RFC3339标准格式是指Java语言中对RFC3339时间格式的支持和应用。

RFC3339是一种日期和时间的标准格式,其格式为"YYYY-MM-DDThh:mm:ss.sTZD",其中YYYY表示年份,MM表示月份,DD表示日期,hh表示小时,mm表示分钟,ss.s表示秒和毫秒,TZD表示时区。

该格式旨在统一日期和时间的表示方式,使得不同系统之间可以更加方便地进行时间信息的交换和解析。

在Java中,RFC3339格式的时间可以通过java.time包中的DateTimeFormatter类进行解析和格式化。

使用DateTimeFormatter类,我们可以将RFC3339格式的时间字符串转换为Java的LocalDateTime对象,也可以将LocalDateTime对象格式化为RFC3339格式的时间字符串。

下面,我们将介绍一些在Java 中使用RFC3339格式的时间的常见操作。

1. 解析RFC3339格式的时间字符串在Java中,我们可以通过DateTimeFormatter类的ofPattern方法来创建一个解析RFC3339格式时间的DateTimeFormatter对象,然后使用该对象的parse方法将RFC3339格式的时间字符串转换为LocalDateTime对象。

代码示例如下:```javaString rfc3339TimeStr = "2022-02-28T08:30:00.123+08:00"; DateTimeFormatter formatter =DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");LocalDateTime dateTime = LocalDateTime.parse(rfc3339TimeStr, formatter);```在这个例子中,我们首先创建了一个RFC3339格式的时间字符串,然后使用DateTimeFormatter.ofPattern方法创建了一个带有RFC3339格式的DateTimeFormatter对象,最后调用parse方法将RFC3339格式的时间字符串转换为LocalDateTime对象。

Java——data类

Java——data类

• firstDay = new GregorianCalendar(year, month, date); • oneDay = new GregorianCalendar(year, month, date);
• oneWeek = new GregorianCalendar(year, month, date); • oneMonth = new GregorianCalendar(year, month, date); • oneQuarter = new GregorianCalendar(year, month, date); • oneYear = new GregorianCalendar(year, month, date);
• import java.util.*; • import java.text.*;
• public class ReviewDates { • private GregorianCalendar firstDay, oneDay, oneWeek, oneMonth, oneQuarter, oneYear; • final int dateArraySize = 6;
import java.util.*;
import java.text.*; public class ThreeDates { public static void main(String[] args) { GregorianCalendar gc1 = new GregorianCalendar(2000, Calendar.JANUARY, 1); GregorianCalendar gc2 = gc1; GregorianCalendar gc3 = new GregorianCalendar(2000, Calendar.JANUARY, 1); //Three dates all equal to January 1, 2000

Java中日期与字符串的处理

Java中日期与字符串的处理

Java中日期与字符串的处理Java中日期与字符串的处理Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,下面为大家介绍一下Java中日期与字符串的处理,一起来看看!日期相关的APIjava.util.Date 类,是一个日期类,含年、月、日、时、分、秒信息。

构造方法:public Date(); 空参构造,得到当前系统时间的日期。

public Date(long date); //根据指定的毫秒数来构造一个日期。

java.util.Calendar 类,是一个日历类。

它包含日期的所有信息.方法:public static Calendar getInstance();public int get(int field);public void set(int field, int value);public void setTime(Date date);public Date getTime();还有大量的常量,这些常量就是 field的值.YEAR,MONTH, DATE,DAY_OF_MONTH, DAY_OF_WEEK. ....java.text.SimpleDateFormat类,日期格式器类[上一讲提到过]构造方法:public SimpleDateFormat(String pattern).注:pattern是指格式化日期的字符串。

yyyy 代全4位数字年份MM 代表2位数字月份dd 代表2位数字月日...有关pattern的细节,可以查看API文档。

如,我们可以构造一个SimpleDateFormate对象.SimpleDateFormat sdf = newSimpleDateFormat("yyyy/MM/dd");常用方法:public String format(Date date); //格式化日期.public Date parse(String dateStr); //把字符串转成日期在JAVA中,时间就指至1970年1月1日午夜至现在所经过的毫秒数.它是一个长整型的数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java里面对日期格式的处理
1.从数据库中查出一条带有date类型字段的记录,并对日期格式进行格式化。

import java.sql.Date;
import java.text.SimpleDateFormat;
public static void test() {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
conn = JdbcUtil.getInstance().getConnection();
st = conn.createStatement();
String sql = "select birthday from user";
rs = st.executeQuery(sql);
while(rs.next()) {
//从数据库中拿到的date
java.sql.Date d = rs.getDate(1);
System.out.println(d);
//按照自己定义的模式转换日期输出格式。

SimpleDateFormat sdf = new SimpleDateFormat(
"yyyy年-MM月-dd日");
System.out.println(sdf.format(d));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtil.getInstance().release(conn, st, rs);
}
}
以上程序输出结果:
1984-02-28
1984年-02月-28日
2.从数据库中查出一条带有date类型字段的记录,并拿到该日期的月份。

public static void test() {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
conn = JdbcUtil.getInstance().getConnection();
st = conn.createStatement();
String sql = "select birthday from user";
rs = st.executeQuery(sql);
while(rs.next()) {
java.sql.Date d = rs.getDate(1);
System.out.println(d);
//Calendar类是对date类的拓展,date类也有getMonth的
方法,但是过时了。

//以下方式拿到的Calendar对象是以当前系统时间的
date对象作为封装的。

Calendar c = Calendar.getInstance();
//以下方法是使用给定的Date设置此Calendar的时间。

c.setTime(d);
int month = c.get(Calendar.MONTH);
//返回的month是从0开始的,所以要加1
System.out.println(month + 1);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtil.getInstance().release(conn, st, rs);
}
}
3.从数据库中查出一条带有date类型字段的记录,拿到这个date的时间。

如果直接rs.getDate(1);这样是拿不到时间的,这样只能拿到日期。

public static void test() {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
conn = JdbcUtil.getInstance().getConnection();
st = conn.createStatement();
String sql = "select birthday from user";
rs = st.executeQuery(sql);
while(rs.next()) {
//方法一:转换成java.util.Date。

java.util.Date d = new java.util.Date(
rs.getDate(1).getTime());
System.out.println(d);
SimpleDateFormat sdf = new SimpleDateFormat(
"HH:mm:ss");
System.out.println(sdf.format(d));
//方法二:使用Timestamp类。

Timestamp ts = rs.getTimestamp(1);
SimpleDateFormat sdf = new SimpleDateFormat(
"HH:mm:ss");
System.out.println(sdf.format(ts));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtil.getInstance().release(conn, st, rs);
}
}
4.如何拿到当前的系统时间??
public static void main(String[] args) {
//拿到当前系统时间第一种方式
java.util.Calendar c = java.util.Calendar.getInstance();
System.out.println("1:" + c.getTime());
//拿到当前系统时间第二种方式
java.util.Date d = new java.util.Date();
System.out.println("2:" + d);
//拿到当前系统时间第三种方式
long l = System.currentTimeMillis();
System.out.println("3:" + l);
//拿到当前系统时间第四种方式
java.sql.Timestamp ts = new java.sql.Timestamp(System
.currentTimeMillis());
System.out.println("4:" + ts);
//对日期格式化,拿到当前系统时间
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
System.out.println("5:" +sdf.format(d));
System.out.println("6:" + sdf.format(ts));
}
打印结果:
1:Sat Oct 10 19:10:39 CST 2009
2:Sat Oct 10 19:10:39 CST 2009
3:1255173039109
4:2009-10-10 19:10:39.109
5:2009-10-10 19:10:39
6:2009-10-10 19:10:39
5.如何把一个字符串转换成一个日期、时间?
String str = “1970-12-23 09:23:37.0”;
Timestamp ts = Timestamp.valueOf(str);
//只要符合上面字符串格式的字符串,都可以被转换成日期、时间格式。

如果一个字符串不是按照上面规定的格式,那么必须用正则表达式或者String相关API转化成上面的字符串格式,然后在把转化好的字符串转换成一个日期、时间。

相关文档
最新文档