将java.util.Date对象转换为新的JDK 8/JSR-310 的最佳方法是什么java.time.LocalDate?
Date input = new Date();
LocalDate date = ???
Run Code Online (Sandbox Code Playgroud) 我试图确定从某个日期开始的年龄.有没有人知道在Android中这样做的干净方法?我显然有Java api可用,但直接的java api非常弱,我希望Android有一些东西可以帮助我.
编辑:在Android中使用Joda时间的多个建议让我有点担心Android Java - Joda Date很慢且相关问题.此外,拉入一个未随平台一起提供的库,这个尺寸可能太大了.
对于某些人来说,这可能是一件简单易事的事情.
我有这个代码......
SQLiteDatabase db = dbs.getReadableDatabase();
String SQL = "SELECT * FROM Table";
final Cursor cursor = db.rawQuery(SQL, null);
array_spinner1[0] = "Select:";
while (cursor.moveToNext()) {
array_spinner1[i]= cursor.getString(1) + " - " + cursor.getString(2);
i ++;
}
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, array_spinner1);
s1.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
我填充数组,一切运行正常.但是,我想在第一个项目(选择)处开始微调器的位置.我希望它从光标中的项目''here'开始,例如.我希望我有意义吗?
将其放入"表格"第1列的上下文中的是年龄范围,第2列是年龄范围.所以在微调器中我得到0-5,6-10,11-20等
而我想要做的是开始在11-20选择的微调器如果用户的dob让他那个年龄....?我知道setSelection会选择一个特定的值,但我需要为用户年龄找出正确的值吗?
所以我基本上想知道如何工作并填充正确选择微调器,谢谢
我试图找出某人的年龄.我按照这里给出的答案: 如何用Java计算某人的年龄?
这是我到目前为止:
public void setDOB(String day, String month, String year){
LocalDate birthDate = new LocalDate(Integer.parseInt(year), Integer.parseInt(month), Integer.parseInt(day));
}
Run Code Online (Sandbox Code Playgroud)
我在声明birthDate变量时遇到错误.我收到以下错误:LocalDate(int,int,int)在LocalDate中具有私有访问权限.我不知道这个错误意味着什么,但我假设它与数据访问有关(例如私人,公共等)
我是新手,如果有人帮助我,我会很感激.
当我尝试使用以下来源计算年龄时,它并没有给我我想要的价值.例如:date-> 29/12/2010,dob-> 30/12/1992,它会给我18而不是17.有没有任何方法我可以编码返回我17个月11个月基于上述2个日期而不是18yrs0mths?
public double getAgeAsOf( Date date ) {
return ((date.getTime() - dob.getTime())/(1000*60*60*24))/365;
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
我正在自学 Kotlin。我试图在输入出生日期后计算用户的年龄并将其显示在另一个活动中。
我尝试了很多不同的东西,但没有一个起作用。我确信我可能忽略了一些简单的事情。
我的代码:
class MainActivity : AppCompatActivity() {
var date1: EditText? = null
var datePickerDialog: DatePickerDialog? = null
lateinit var submitButton: Button
lateinit var userInput: EditText
lateinit var dob: EditText
@SuppressLint("SetTextI18n", "MissingInflatedId", "CutPasteId")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(layout.activity_main)
date1 = findViewById<EditText>(id.date) as EditTe
date1!!.setOnClickListener{ // calender class's instance and get current date , month and year from calender
val c = Calendar.getInstance()
val mYear = c[Calendar.YEAR] // current year
val mMonth = c[Calendar.MONTH] // current month
val …Run Code Online (Sandbox Code Playgroud) 可能重复:
如何计算Java中某人的年龄?
我有两个日期,例如19/03/1950和18/04/2011.我如何计算它们之间的差异以获得该人的年龄?我是否必须继续乘以得到小时或秒等?
我试图计算java中考虑了几个月的年龄,所以减去几年就不行了.我还想告诉用户今天是他们的生日.这是我到目前为止的代码,但我担心它有点偏.它也不会告诉今天是否是生日,即使它比较的两个日期相同.我试图最初计算的方式是使用毫秒.你看到获得当前日期的两种方法的原因是因为我正在尝试让它工作,但是想向每个人展示我的工作,以便他们能够指出我正确的方向.
编辑澄清我的意思是2015-1993可以是22岁或21岁,这取决于他们今年的生日已经过去了.我想确保在考虑到这一点后得到正确的年龄.
public class ShowAgeActivity extends AppCompatActivity {
private TextView usersAge;
private static long daysBetween(Date one, Date two)
{
long difference = (one.getTime()-two.getTime())/86400000; return Math.abs(difference);
}
private Date getCurrentForBirthday()
{
Date birthday = (Date) this.getIntent().getExtras().get("TheBirthDay");
int birthdayYear = birthday.getYear() + 1900;
Calendar cal = Calendar.getInstance();
cal.set(birthdayYear, Calendar.MONTH, Calendar.DAY_OF_MONTH);
Date current = cal.getTime();
return current;
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_age);
Date birthday = (Date) this.getIntent().getExtras().get("TheBirthDay");
Date currentDay = Calendar.getInstance().getTime();
long age = daysBetween(birthday,currentDay)/365;
usersAge =(TextView)findViewById(R.id.ageTextView);
if (birthday.compareTo(getCurrentForBirthday()) == …Run Code Online (Sandbox Code Playgroud) Date currentDate=new Date();
DateFormat formatter=new SimpleDateFormat("dd-MM-yyyy");;
Date date =(Date)formatter.parse(birthDate); //birthDate is a String, in format dd-MM-yyyy
long diff = currentDate.getTime() - date.getTime();
long d=(1000*60*60*24*365);
long years = Math.round(diff / d);
age=(int) years;
Run Code Online (Sandbox Code Playgroud)
年龄的价值没有正确回归.我究竟做错了什么?
Enter your birthdate: (in format dd-MM-yyyy)
25-07-1992
Current Date: Tue Apr 21 14:05:19 IST 2015
Birthday: Sat Jul 25 00:00:00 IST 1992
Output: Age is: 487
Run Code Online (Sandbox Code Playgroud) First example: birthdate :10-01-1991(ddmmyyyy)
CurrentDate :10-01-2017
Run Code Online (Sandbox Code Playgroud)
如果上面是条件,那么我想打印26作为当前年龄.第二个例子:生日:25-07-1991(ddmmyyyy)
CurrentDate:10-01-2017 如果上面是条件那么我想打印25作为当前年龄.
请帮我 ....!!!!!!
以下是我尝试过的代码.
private int calculateage(Integer day1, Integer month1, Integer year1)
{
Calendar birthCal = new GregorianCalendar(1991, 01, 10);
Calendar nowCal = new GregorianCalendar();
age = nowCal.get(Calendar.YEAR) - birthCal.get(Calendar.YEAR);
boolean isMonthGreater = birthCal.get(Calendar.MONTH) >= nowCal
.get(Calendar.MONTH);
boolean isMonthSameButDayGreater = birthCal.get(Calendar.MONTH) >= nowCal.get(Calendar.MONTH)
&& birthCal.get(Calendar.DAY_OF_MONTH) >= nowCal
.get(Calendar.DAY_OF_MONTH);
if (age < 18) {
Age = age;
}
else if (isMonthGreater || isMonthSameButDayGreater) {
Age = age - 1;
}
return Age;
Run Code Online (Sandbox Code Playgroud)
}
java ×8
android ×5
date ×3
calendar ×2
compareto ×1
datepicker ×1
datetime ×1
difference ×1
format ×1
java-8 ×1
java-time ×1
kotlin ×1
spinner ×1
threetenabp ×1