JAVA另一种做日期加减法的方法(更简单)

简便日期加减运算方法
本文介绍了一种简化日期加减运算的技巧,通过将日期转换为字符串并使用Java进行日期调整,自动处理大小月、闰月及进位问题。

最近发现一种更简单的日期加减运算方法:

先用int 直接运算,例如:20120728  要加5天 20120728+5=20120733;

把20120733 转换成字符串 "2012/07/33" 然后付给

java.util.Date   adate=new   Date("2012/07/33" );

adate就会变为20120802

date转换时会自动调整格式如果超过31天则会自动在月上进位
 同样超过12月年也会进位。大小月以及闰月都会自动调节

大家可以试试。

下面是我用于安卓开发的代码。

 

Date date_add(int time, int k){//time: 日期8位int ,k :要增加的天数。
  
  String s = String.valueOf(time);//转成字符串
  StringBuffer str = new StringBuffer(s);//转换成字符串变量
  String strInsert = " ";
  str.insert(4, strInsert);//在年月之间加入空格“ ”
  str.insert(7, strInsert);//在月日之间加入空格“ ”
  s = str.toString();
  String arry[] = s.split(" ");
  int nian = Integer.parseInt(arry[0]);//取出年
  int yue = Integer.parseInt(arry[1]);//取出月
  int ri = Integer.parseInt(arry[2]);//取出年
  int ri2=ri+k;//直接在日上做加法
  //最关键是下面这步。date转换时会自动调整格式如果超过31天则会自动在月上进位
  //同样超过12月年也会进位。大小月以及闰月都会自动调节
  java.util.Date   adate=new   Date( ""+nian+"/"+yue+"/"+ri2 );
  //
  return adate;

 }

另外有其它的方法共大家参考,下面的方法可能比较正中:

http://blog.youkuaiyun.com/liwenfeng1022/article/details/6534176

### 如何在 Java 中对 Timestamp 进行秒级加减操作 为了执行时间戳的秒级加减,在 Java 中通常会使用 `Calendar` 类来处理这种需求。通过设置 `Calendar` 的时间字段并调用其方法来进行增加或减少指定的时间间隔。 对于简单的秒级增减,可以直接利用 `Timestamp` 对象内部存储的毫秒数进行计算: ```java import java.sql.Timestamp; import java.util.concurrent.TimeUnit; public class TimeManipulation { public static void main(String[] args) { // 创建一个新的 Timestamp 实例 Timestamp originalTimestamp = new Timestamp(System.currentTimeMillis()); // 定义要增加或减少的秒数 long secondsToAddOrSubtract = 60L; // 增加或减少的具体秒数值 // 计算新的时间戳 (增加) Timestamp increasedTimestamp = new Timestamp(originalTimestamp.getTime() + TimeUnit.SECONDS.toMillis(secondsToAddOrSubtract)); System.out.println("Increased by " + secondsToAddOrSubtract + " seconds: " + increasedTimestamp); // 计算新的时间戳 (减少) Timestamp decreasedTimestamp = new Timestamp(originalTimestamp.getTime() - TimeUnit.SECONDS.toMillis(secondsToAddOrSubtract)); System.out.println("Decreased by " + secondsToAddOrSubtract + " seconds: " + decreasedTimestamp); } } ``` 上述代码展示了如何创建一个基于当前时间的新 `Timestamp` 对象,并对其进行秒级别的加法和减法运算[^1]。这里采用的是直接修改底层表示时间的毫秒值的方式完成操作。这种方式简单明了,适用于大多数场景下的快速开发需求。 一种灵活的法是借助于 `Calendar` 来实现相同的功能,这允许加复杂的日期逻辑处理: ```java import java.sql.Timestamp; import java.util.Calendar; public class CalendarBasedTimeManipulation { public static void main(String[] args) { // 初始化 Calendar 并设定初始时间为给定的 Timestamp Calendar calendarInstance = Calendar.getInstance(); Timestamp initialTimestamp = new Timestamp(System.currentTimeMillis()); calendarInstance.setTimeInMillis(initialTimestamp.getTime()); // 添加或移除特定数量的秒 int secondsToModify = 60; // 修改量为正则添加,负则删除 calendarInstance.add(Calendar.SECOND, secondsToModify); // 获取调整后的 Timestamp Timestamp modifiedTimestamp = new Timestamp(calendarInstance.getTimeInMillis()); System.out.println("Modified Timestamp after adding/removing " + Math.abs(secondsToModify) + " second(s): " + modifiedTimestamp); } } ``` 这段程序说明了怎样运用 `Calendar` API 执行同样的任务——即向现有的时间戳上加上或减去一定数量的秒[^4]。这种方法提供了多的灵活性,尤其是在涉及到跨日历周期的变化时为有用。 无论是哪种方式都能有效地达到目的,具体选择取决于实际应用场景和个人偏好。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值