gpt4 book ai didi

java - 如何在android中用java显示即将到来的生日?

转载 作者:行者123 更新时间:2023-12-02 09:14:07 25 4
gpt4 key购买 nike

我是 Java 编程新手,正在从事 Android 应用程序开发。我了解java的基础知识并且我能理解代码。我需要知道如何计算从当前日期开始即将到来的生日总天数。

` btCalculate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

String sDate = btBirth.getText().toString();
String eDate = btToday.getText().toString();

SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("dd/MM/yyyy");
try {
Date date1 = simpleDateFormat1.parse(sDate);
Date date2 = simpleDateFormat1.parse(eDate);

long startDate = date1.getTime();
long endDate = date2.getTime();

if (startDate <= endDate) {

Period period = new Period(startDate, endDate, PeriodType.yearMonthDay());
int years = period.getYears();
int months = period.getMonths();
int days = period.getDays();


textView2.setText("আপনার বয়স হচ্ছে : ");

textViewResult.setText(years + " বছর " + months + " মাস " + days + " দিন।");

}


else {

Toast.makeText(getApplicationContext(), "জন্মতারিখ আজকের তারিখের চেয়ে বড় হবে না। ", Toast.LENGTH_SHORT).show();
}

} catch (ParseException e) {
e.printStackTrace();
}


}
});`

我做了这个,这可以计算总年龄。我需要帮助来计算即将到来的生日。希望你们能帮助我。谢谢

最佳答案

tl;博士

通过解析生日字符串、提取月日并应用所需的年份来确定生日周年纪念日,从而生成 LocalDate 对象的日期。

MonthDay
.from(
LocalDate
.parse(
"23/02/1969" ,
DateTimeFormatter.ofPattern( "did/MM/uuuu" )
)
)
.atYear(
2040
)
.toString()

2040-02-23

通过将两个 LocalDate 对象传递给 Period. Between 来确定年龄:出生日期和生日周年纪念日。

避免遗留日期时间类

不要将糟糕的遗留日期时间类与它们的替代品混合在一起。仅使用 java.time 包中的类。切勿使用 DateSimpleDateFormat

本地日期

对于仅包含日期的值,没有时间和时区,请使用 LocalDate

解析传入的字符串。

String input = "23/01/1971" ; 
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu" ;
LocalDate birthDate = LocalDate.parse( input , f ) ;

获取今天的日期。这需要一个时区。对于任何特定时刻,全局各地的日期因时区而异。

ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
LocalDate today = LocalDate.now( z ) ;

验证输入。该日期应该在今天之前。

if( birthDate.isBefore( today ) ) { … } else { … handle error }

句号

确定年龄。 Period 类表示未附加到时间线的时间跨度。

Period age = Period.between( birthDate , today ) ;

月日

但是您问题的某些部分似乎决定了 future 的生日庆祝日期。为此,您需要 MonthDay类(class)。此类表示日期的月份和日期部分,但没有年份的上下文。

MonthDay birthMonthDay = MonthDay.from( birthDate ) ;

确定今年的生日周年纪念日。

LocalDate birthdayAnniversaryThisYear = birthMonthDay.atYear( today.getYear() ) ; 

另一年。

LocalDate birthdayAnniversary = birthMonthDay.atYear( 2035 ) ; 

对于 2 月 29 日这一天,四年中的三年周年纪念日将无效。因此java.time将结果调整为2月28日。

关于java - 如何在android中用java显示即将到来的生日?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59141326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com