作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 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();
}
}
});`
我做了这个,这可以计算总年龄。我需要帮助来计算即将到来的生日。希望你们能帮助我。谢谢
最佳答案
通过解析生日字符串、提取月日并应用所需的年份来确定生日周年纪念日,从而生成 LocalDate
对象的日期。
MonthDay
.from(
LocalDate
.parse(
"23/02/1969" ,
DateTimeFormatter.ofPattern( "did/MM/uuuu" )
)
)
.atYear(
2040
)
.toString()
2040-02-23
通过将两个 LocalDate
对象传递给 Period. Between
来确定年龄:出生日期和生日周年纪念日。
不要将糟糕的遗留日期时间类与它们的替代品混合在一起。仅使用 java.time 包中的类。切勿使用 Date
或 SimpleDateFormat
。
本地日期
对于仅包含日期的值,没有时间和时区,请使用 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/
我是一名优秀的程序员,十分优秀!