在Java编程中,日期和时间的处理是常见任务。本文将介绍几种常用的日期数字格式处理方法,包括日期格式转换、日期计算、日期格式化以及特殊日期操作。
首先,我们来看一个简单的日期格式转换函数:
java
public static String formatDate(String dateStr) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
if (StringUtils.isEmpty(dateStr)) {
sdf = new SimpleDateFormat("yyyyMM");
dateStr = sdf.format(new Date());
} else {
Date date = sdf.parse(dateStr);
sdf = new SimpleDateFormat("yyyyMM");
dateStr = sdf.format(date);
}
return dateStr;
}
这个函数用于将日期字符串转换为指定格式。如果输入为空或空字符串,则默认转换为“yyyyMM”格式。否则,使用输入的日期字符串进行转换。
接下来,我们探讨日期之间的天数差计算:
java
public static int daysBetween(Date smdate, Date bdate) {
Calendar cal = Calendar.getInstance();
cal.setTime(smdate);
long time1 = cal.getTimeInMillis();
cal.setTime(bdate);
long time2 = cal.getTimeInMillis();
long between_days = (time2 - time1) / (1000 * 3600 * 24);
return Integer.parseInt(String.valueOf(between_days));
}
此函数接受两个日期对象,并返回它们之间的天数差。它通过计算两个日期时间戳的差值,并除以一天的毫秒数来实现。
然后是获取下一个月份的日期:
java
public static Date getNextMonth() {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 1);
return cal.getTime();
}
此函数将当前日期向前移动一个月,并返回新的日期对象。
日期格式化函数如下:
java
public static String formartDate(Date date, String format) {
if (date == null) {
return "";
} else {
SimpleDateFormat ft = new SimpleDateFormat(format == null ? "yyyy-MM-dd HH:mm:ss" : format);
return ft.format(date);
}
}
此函数接受日期对象和格式字符串,将日期格式化为指定格式,并返回格式化后的字符串。
接下来是获取一周中的某一天:
java
public int getWeekDay(String dates) {
Calendar cal = Calendar.getInstance();
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
Date d = null;
try {
d = f.parse(dates);
} catch (ParseException e) {
logger.error("日期转换异常", e);
}
cal.setTime(d);
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w == 0) {
w = 7;
}
return getWeekDay(cal);
}
public int getWeekDay(Calendar cal) {
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w == 0) {
w = 7;
}
return w;
}
这些函数用于获取给定日期或日历实例的一周中的某一天。第一个函数首先尝试解析输入的字符串日期,然后使用第二个函数计算具体的天数。
获取某一年某个月的完整日期列表:
java
public static List getMonthFullDay(int year, int month, int day) {
List fullDayList = new ArrayList>();
if (day <= 0) {
day = 1;
}
Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1);
cal.set(Calendar.DAY_OF_MONTH, day);
int count = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
for (int j = 0; j <= (count - 1); ) {
if (sdf.format(cal.getTime()).equals(getLastDay(year, month))) {
break;
}
cal.add(Calendar.DAY_OF_MONTH, j == 0 ? +0 : +1);
j++;
fullDayList.add(sdf.format(cal.getTime()));
}
return fullDayList;
}
此函数用于获取指定年份和月份的完整日期列表。它使用日历实例来遍历整个月份。
获取某一年某个月的指定周几:
java
public static List getMonthWeekNumDays(int year, int month, int day, List weekDays) {
List fullDayList = new ArrayList>();
if (day <= 0) {
day = 1;
}
Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1);
cal.set(Calendar.DAY_OF_MONTH, day);
int count = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
for (int j = 0; j <= (count - 1); ) {
if (sdf.format(cal.getTime()).equals(getLastDay(year, month))) {
break;
}
cal.add(Calendar.DAY_OF_MONTH, j == 0 ? +0 : +1);
j++;
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK) - 1;
dayOfWeek = dayOfWeek == 0 ? 7 : dayOfWeek;
if (weekDays.contains(dayOfWeek)) {
fullDayList.add(sdf.format(cal.getTime()));
}
}
return fullDayList;
}
此函数用于获取指定年份、月份和周几的日期列表。它同样使用日历实例遍历整个月份,并检查每条日期是否符合指定的周几。
最后,获取某一年某个月的最后一天:
java
public static String getLastDay(int year, int month) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month);
cal.set(Calendar.DAY_OF_MONTH, 0);
return sdf.format(cal.getTime());
}
此函数用于获取指定年份和月份的最后一天。它将当前日期设置为该月的最后一天,并使用日期格式化函数返回格式化的字符串。
此代码段提供了Java日期数字格式的常用处理方法,包括日期格式转换、日期计算、日期格式化以及特殊日期操作。这些方法可以帮助开发者更高效地处理日期相关的任务。
温馨提示:内容为网友见解,仅供参考
java 日期 数字 格式 常用处理
public static String formatDate(String dateStr) { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");if (StringUtils.isEmpty(dateStr)) { sdf = new SimpleDateFormat("yyyyMM");dateStr = sdf.format(new Date());} else { Date date = sdf.parse(dateStr);sdf = new SimpleDa...
用Java实现对日期的加减
1. 利用java.util.Calendar 通过Calendar类操作日期,使用add方法实现加减。正数值往后,负数值向前。2. 利用java.text.SimpleDateFormat与java.util.Date 结合这两个类处理日期格式,先将日期转换为Date对象,再进行加减操作,最后转回字符串格式。3. 使用GregorianCalendar GregorianCalendar提供了丰富的日期操...
java中SimpleDateFormat解析日期格式的问题
为解决此问题,通过`setLenient(false)`方法,让SimpleDateFormat对日期格式严格校验。原代码修改如下:执行此代码会抛出异常:`Exception in thread “main” java.text.ParseException: Unparseable date: “2024-06-01”`若追求代码健壮性,可不启用严格校验,避免异常抛出。然而,具体实现需根据实际情况决...
java中如何对日期进行格式处理
import java.text.SimpleDateFormat;import java.util.Date;public class test { public static void main(String []aa){ SimpleDateFormat dateformat1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");String a1=dateformat1.format(new Date());System.out.println("时间2:"+a1);System.out...
Java常用的时间工具类DateTimeUtils.java对常用的时间操作方法总结...
汇集常用时间操作方法,时间工具类DateTimeUtils.java应运而生!工具类方法一览:1. 将字符串转换为日期 2. 日期字符串格式化输出 3. Date类型日期转字符串格式化输出 4. 增加天数后的日期 5. 计算日期增加某天数后的日期 6. 减少天数后的日期 7. 增加月数后的日期 8. 减少月数后的日期 9. 减少...
JAVA如何装换成 2022年11月15日格式?
可直接在后端java程序中进行处理,这要看你原来的日期是什么类型和什么格式的,我根据不同情况用main函数模拟如下:public static void main(String[] args) {System.out.print("Date类型日期格式化,结果:");Date date1 = new Date();SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日...
java语言中的date类及方法的用法
这段代码当中,首先创建了一个DateFormat对象进行格式设置,接着创建了一个GregorianCalendar对象cal,接着使用cal.setTime()方法设置cal对象中的时间为当前时间,然后通过format格式化由cal.getTime()返回的时间进行输出,后面利用set方法设置cal的日期为当前星期的FRIDAY,此时cal中存储的时间就是这个星期五的...
java 日期 下一周的第一天 最后一天 分别是多少号
1,国外日期格式 代码为:Calendar calendar = new GregorianCalendar(); \/\/获取当前日期 System.out.println(calendar.getTime()); \/\/打印当前日期 calendar.add(Calendar.DAY_OF_WEEK,7-calendar.get(Calendar.DAY_OF_WEEK)+1);System.out.println(calendar.getTime()); \/\/打印下周日的日期...
excel中日期格式是数字,想转成java的日期格式,遇到了问题
1.纯数值格式:getNumericCellValue() 直接获取数据 2.日期格式:处理yyyy-MM-dd, d\/m\/yyyy h:mm, HH:mm 等不含文字的日期格式 1).判断是否是日期格式:HSSFDateUtil.isCellDateFormatted(cell)2).判断是日期或者时间 cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h...
Java 日期日历类Date,Calendar,LocalDateTime 总结
Java中日期和时间处理的各类对象,如Date、Calendar、LocalDateTime,各有其特点和适用场景。Date类虽然基础,但存在局限性,如不支持线程安全和闰秒处理。而Calendar类虽可操作日历字段,但格式化和线程安全性问题也存在。为解决这些问题,Java 8引入了LocalDate、LocalTime和LocalDateTime,它们分别表示日期、时...