You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发中如何实现将当前日期调整为明天的日期并展示

问题原因

直接对日字段的字符串转整数后加1的实现方式,没有处理跨月、跨年、闰年的边界场景,比如当月最后一天为31号时,加1会得到非法的32号,导致逻辑错误。另外Date和SimpleDateFormat为Java遗留时间API,存在线程安全、易出逻辑问题的缺陷,更推荐使用新版时间API实现需求。


方案1:使用java.time新版时间API(推荐)

Android API 26及以上直接支持,低版本可开启核心库desugar兼容,修改后代码如下:

package com.example.changetime;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.TextView;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView dateOne = findViewById(R.id.dateOne);
        TextView dateTwo = findViewById(R.id.dateTwo);

        // 获取当前日期、明天日期
        LocalDate today = LocalDate.now();
        LocalDate tomorrow = today.plusDays(1);

        // 格式化完整当前日期展示
        DateTimeFormatter fullFormatter = DateTimeFormatter.ofPattern("dd-MM-yy", Locale.getDefault());
        dateOne.setText(today.format(fullFormatter));

        // 格式化明天的日字段展示
        DateTimeFormatter dayFormatter = DateTimeFormatter.ofPattern("dd", Locale.getDefault());
        dateTwo.setText(tomorrow.format(dayFormatter));
    }
}

方案2:旧版本兼容方案(基于Calendar实现)

如果需要适配API 26以下的设备且不想开启desugar,可以用Calendar类自动处理日期进位,修改后代码如下:

package com.example.changetime;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.TextView;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView dateOne = findViewById(R.id.dateOne);
        TextView dateTwo = findViewById(R.id.dateTwo);

        // 展示当前完整日期
        String currentDate = new SimpleDateFormat("dd-MM-yy", Locale.getDefault()).format(new Date());
        dateOne.setText(currentDate);

        // 用Calendar计算明天日期,自动处理跨月跨年逻辑
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DAY_OF_MONTH, 1);
        String tomorrowDay = new SimpleDateFormat("dd", Locale.getDefault()).format(calendar.getTime());
        dateTwo.setText(tomorrowDay);
    }
}

内容的提问来源于stack exchange,提问作者JackCohen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:45:03