gpt4 book ai didi

java - 如何计算android中通过日期选择器选择的两个日期之间的天数

转载 作者:行者123 更新时间:2023-12-01 16:56:53 26 4
gpt4 key购买 nike

我想计算从日期选择器中选择的日期之间的天数。我已经尝试了足够多,但找不到任何解决方案!请帮我找到解决方案。这是当我们单击 editText 时显示日期选择器的代码。我到处搜索但找不到任何正确的结果。

LeaveActivity.java

    public class LeaveActivity extends AppCompatActivity {

private static EditText edt_tofrom;
private static EditText edt_toDate;
private TextView no_ofDays;

private DatePickerDialog.OnDateSetListener edt_tofromlistener;
private DatePickerDialog.OnDateSetListener edt_toDatelistener;


// DatePickerDialogFragment mDatePickerDialogFragment;

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

edt_tofrom = (EditText) findViewById(R.id.from_date);
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
// edt_toform.setText( sdf.format(Calendar.getTime()));
edt_toDate = (EditText) findViewById(R.id.to_date);
no_ofDays = (TextView) findViewById(R.id.edt_noOfDays);
// mDatePickerDialogFragment = new DatePickerDialogFragment();


// edt_toform.setOnClickListener(this);
// edt_toDate.setOnClickListener(this);

edt_tofrom.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void onClick(View v) {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
int day1 = calendar.get(Calendar.DAY_OF_YEAR);

DatePickerDialog datePickerDialog = new DatePickerDialog(LeaveActivity.this,
edt_tofromlistener, year, month, day);

datePickerDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.WHITE));
datePickerDialog.show();
}
});

edt_tofromlistener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth){
month = month + 1;
Log.d("tag", "setDate: " + year + "/" + month + "/" + dayOfMonth + "");
String date1 = +year + "/" + month + "/" + dayOfMonth + "";
edt_tofrom.setText(date1);

}
};

edt_toDate.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void onClick(View v) {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
int day2 = calendar.get(Calendar.DAY_OF_YEAR);

DatePickerDialog datePickerDialog = new DatePickerDialog(LeaveActivity.this,
edt_toDatelistener, year, month, day);

datePickerDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.WHITE));
datePickerDialog.show();


}
});

edt_toDatelistener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
month = month + 1;
Log.d("tag", "setDate: " + year + "/" + month + "/" + dayOfMonth + "");

String date2 = +year + "/" + month + "/" + dayOfMonth + "";
edt_toDate.setText(date2);

}

};

}


}

activity_leave.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="10dp"

tools:context=".activities.LeaveActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="APPLY FOR LEAVE"
android:textSize="24sp"
android:layout_gravity="center"
android:textStyle="bold"
android:background="@drawable/editt_text_background"/>

</LinearLayout>


<!-- TODO: Update blank fragment layout -->


<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/editt_text_background">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:orientation="horizontal"
android:layout_weight="1">

<TextView
android:id="@+id/selectTxtView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="10dp"
android:padding="10dp"
android:text="Select Leave Type"
android:textSize="15sp"
android:textStyle="bold"/>

<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_toEndOf="@id/selectTxtView"
android:background="@drawable/editt_text_background"
android:entries="@array/LeaveType"
android:padding="10dp" />
</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:orientation="horizontal"
android:padding="10dp"
android:layout_weight="1">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="From Date:"
android:textColor="#000000"/>

<EditText
android:id="@+id/from_date"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ems="10"
android:layout_weight="1"
android:background="@drawable/editt_text_background"
android:clickable="true"
android:longClickable="false"
android:inputType="date"
android:layout_marginStart="36dp"
android:layout_marginEnd="20dp"
android:focusable="false"/>



<!-- <DatePicker-->
<!-- android:id="@+id/date_picker"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:calendarViewShown="false"-->
<!-- android:datePickerMode="spinner"/>-->

</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="To Date:"
android:textColor="#000000"/>

<EditText
android:id="@+id/to_date"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10"
android:background="@drawable/editt_text_background"
android:clickable="true"
android:longClickable="false"
android:inputType="date"
android:layout_marginStart="36dp"
android:layout_marginEnd="20dp"
android:focusable="false" />
</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"
android:layout_weight="1">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="No.Of Days:"
android:textColor="#000"
android:padding="10dp"/>
<TextView
android:id="@+id/edt_noOfDays"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/editt_text_background"/>
</LinearLayout>

</ScrollView>

</LinearLayout>

最佳答案

使用以下函数来计算两个Date之间的天数差异,您也可以通过更改返回对象来使用相同的方法来计算小时、分钟或秒的差异。

public static Long getDateDifferenceInDays(Date startDate, Date endDate) {

Long different = endDate.getTime() - startDate.getTime();

Long secondsInMilli = 1000L;
Long minutesInMilli = secondsInMilli * 60;
Long hoursInMilli = minutesInMilli * 60;
Long daysInMilli = hoursInMilli * 24;

Long elapsedDays = different / daysInMilli;
different = different % daysInMilli;

Long elapsedHours = different / hoursInMilli;
different = different % hoursInMilli;

Long elapsedMinutes = different / minutesInMilli;
different = different % minutesInMilli;

Long elapsedSeconds = different / secondsInMilli;

System.out.printf("%d days, %d hours, %d minutes, %d seconds%n", elapsedDays, elapsedHours, elapsedMinutes, elapsedSeconds);

return elapsedDays;
}

关于java - 如何计算android中通过日期选择器选择的两个日期之间的天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61575036/

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