我有两个EditText上的。 一开始日期和其他与结束日期。 我需要做一个验证和检查结束日期比启动日期。 我不知道我能做到这一点。
在我的代码使天bettween两个日期的差别,现在我还需要检查是否结束日期比开始日期更大
这里是我的代码:
//EditText with string of start date
dataInicio = (EditText)findViewById(R.id.ses_dpDataIni);
//EditText with string of end date
dataFim = (EditText)findViewById(R.id.ses_dpDataFim);
//Convert String to calendar to check the difference between two dates..
try{
dateInic = dataInicio.getText().toString();
dateFim = dataFim.getText().toString();
calInic=Calendar.getInstance();
calFim = Calendar.getInstance();
calInic.setTime(form.parse(dateInic));
calFim.setTime(form.parse(dateFim));
}
catch (ParseException e) {
e.printStackTrace();
}
Log.w(SessaoQuotaEdit.class.getName(),"DIFERENCA DE DIAS" +daysBetween(calInic,calFim));
tvDiasQuotas = (TextView)findViewById(R.id.ses_tvNumDiasQuota);
tvDiasQuotas.setText("NUMBER OF DAYS: " +daysBetween(calInic,calFim));
//CHECK IS END-DATE IS GREATER THAN START-DATE
.............
.............
你能帮助我吗? 谢谢 :)
Answer 1:
SimpleDateFormat dfDate = new SimpleDateFormat("yyyy-MM-dd");
public static boolean CheckDates("2012-07-12", "2012-06-12)" {
boolean b = false;
try {
if(dfDate.parse(d1).before(dfDate.parse(d2)))
{
b = true;//If start date is before end date
}
else if(dfDate.parse(d1).equals(dfDate.parse(d2)))
{
b = true;//If two dates are equal
}
else
{
b = false; //If start date is after the end date
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return b;
}
Answer 2:
试试这个功能。
public static boolean isDateAfter(String startDate,String endDate)
{
try
{
String myFormatString = "yyyy-M-dd"; // for example
SimpleDateFormat df = new SimpleDateFormat(myFormatString);
Date date1 = df.parse(endDate));
Date startingDate = df.parse(startDate);
if (date1.after(startingDate))
return true;
else
return false;
}
catch (Exception e)
{
return false;
}
}
如果结束日期是开始日期之后返回true。
Answer 3:
public static boolean CheckDates(String d1, String d2){
SimpleDateFormat dfDate = new SimpleDateFormat("yyyy-MM-dd");
boolean b = false;
try {
if(dfDate.parse(d1).before(dfDate.parse(d2)))
{
b = true;//If start date is before end date
}
else if(dfDate.parse(d1).equals(dfDate.parse(d2)))
{
b = true;//If two dates are equal
}
else
{
b = false; //If start date is after the end date
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return b;
}
Answer 4:
为什么不试试DateUtils.getRelativeTimeSpanString ?
Answer 5:
谢谢大家 ....
Here is my solution
if(calInic.after(calFim)==true)
Log.w(SessaoQuotaEdit.class.getName(),"ERROR: DATA FINAL É ANTES DA DATA INICIAL");
else
if(calInic.before(calFim)==true)
Log.w(SessaoQuotaEdit.class.getName(),"CORRECTO: DATAS CORRECTAS");
else
if(calInic.equals(calFim)==true)
Log.w(SessaoQuotaEdit.class.getName(),"CORRECTO: DATAS IGUAIS");
Answer 6:
***Used Ram kiran Answer***
public boolean checkDatesBefore(String startDate, String endDate) {
boolean b = false;
SimpleDateFormat dfDate = new SimpleDateFormat("MM/dd/yyyy");
try {
if (dfDate.parse(startDate).before(dfDate.parse(endDate))) {
b = true;// If start date is before end date
} else if (dfDate.parse(startDate).equals(dfDate.parse(endDate))) {
b = true;// If two dates are equal
} else {
b = false; // If start date is after the end date
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return b;
}
checkDatesBefore(startDate,endDate);
**and check another time for not less than or equals today**
public boolean checkDatesAfter(String selectedDate, String today) {
boolean b = false;
SimpleDateFormat dfDate = new SimpleDateFormat("MM/dd/yyyy");
try {
if (dfDate.parse(selectedDate).compareTo((dfDate.parse(today))) < 0)
{
b = true;// If start date is before end date
} else if (dfDate.parse(selectedDate).equals(dfDate.parse(today))) {
b = true;// If two dates are equal
} else {
b = false; // If start date is after the end date
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return b;
}
enter code here
call checkDatesAfter(selectedDate,today)
**Best of luck..**
Answer 7:
if (!dateValidation("2016-11-23", "2016-11-24", "yyyy-MM-dd")) {
// ToastHelper.show("Please select date properly");
// or do something
}
public static boolean dateValidation(String startDate,String endDate,String dateFormat )
{
try
{
SimpleDateFormat df = new SimpleDateFormat(dateFormat);
Date date1 = df.parse(endDate);
Date startingDate = df.parse(startDate);
if (date1.after(startingDate))
return true;
else
return false;
}
catch (Exception e)
{
return false;
}
}
Answer 8:
拉姆基兰的简化答案,它会检查只在一个声明。
public static boolean checkDates(String d1, String d2) {
SimpleDateFormat dfDate = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
boolean b = false;
try {
b = dfDate.parse(d1).before(dfDate.parse(d2)) || dfDate.parse(d1).equals(dfDate.parse(d2));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return b;
}
Answer 9:
科特林扩展:
fun String.isLessThanEndDate(toDate:String):Boolean {
val dfDate = SimpleDateFormat("dd MMM, yyyy", Locale.ENGLISH)
var result = false
try
{
result = dfDate.parse(this).before(dfDate.parse(toDate)) || dfDate.parse(this) == dfDate.parse(toDate)
}
catch (e:ParseException) {
e.printStackTrace()
}
return result
}
文章来源: End-date greater than start-date validation android