JAVA获得上个月月份 old/new

今天收到了大佬的关爱。

以前我写的获得上个月月份的字符串方法如下:

	// 获得上个月月份年份
	public String getYearMonth() {
		Calendar now = Calendar.getInstance();
		int month = now.get(Calendar.MONTH);
		String m;
		if (month < 10) {
			m = "0" + month;
		} else {
			m = month + "";
		}
		return now.get(Calendar.YEAR) + "-" + m;
	}

大佬关爱以后,有了新方法(java8限定):

	protected String getLastMonth() {
		LocalDate today = LocalDate.now();
		today = today.minusMonths(1);
		DateTimeFormatter formatters = DateTimeFormatter.ofPattern("yyyy-MM");
		return formatters.format(today);
	}

明显比我的看起来更舒服!感谢大佬的关爱

Java中,定时清理一个月的数据并备份通常需要结合`java.util.Timer`或`java.time`包下的时间处理功能以及文件I/O操作。这里是一个简单的例子,展示如何使用`Timer`来定期执行清理任务: ```java import java.io.*; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.time.LocalDate; import java.time.ZoneId; import java.util.Calendar; import java.util.Date; import java.util.Timer; import java.util.TimerTask; public class DataCleaner { private static final String DATA_DIR = "/path/to/data/directory"; // 数据存储目录 private static final String BACKUP_DIR = "/path/to/backup/directory"; // 备份目录 private static final int MONTHLY_THRESHOLD = 30; // 清理旧于一个月的数据 public static void main(String[] args) { Timer timer = new Timer(); timer.scheduleAtFixedRate(new DataCleanupTask(), 0, 60 * 60 * 1000); // 每隔一小时执行一次清理任务 } static class DataCleanupTask extends TimerTask { @Override public void run() { try { LocalDate oneMonthAgo = LocalDate.now().minusMonths(1).withDayOfMonth(1); // 获取上个月的第一天 Calendar calendar = Calendar.getInstance(ZoneId.systemDefault()); // 获取当前日期 // 遍历目录,找出超过一个月的文件 for (Path filePath : Files.list(Paths.get(DATA_DIR))) { if (!filePath.toFile().isDirectory()) { // 只处理文件 File file = filePath.toFile(); Date lastModified = file.lastModified(); // 如果文件修改时间早于一个月前 if (lastModified.before(oneMonthAgo.atStartOfDay().atZoneSameInstant(ZoneId.systemDefault()).toInstant())) { System.out.println("Deleting old file: " + file.getName()); // 删除原始文件 file.delete(); // 创建备份文件,可以使用copyTo()或renameTo()方法 Path backupFilePath = Paths.get(BACKUP_DIR, file.getName()); Files.copy(filePath, backupFilePath); System.out.println("Backup created at: " + backupFilePath); } } } } catch (Exception e) { e.printStackTrace(); } } } } ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值