Android str.插入(2,“-”); str.插入(5,'-'); etPurchaseDate.setText(str); }否则{ etPurchaseDate.setText(searchFrom); etPurchaseDate.requestFocus(); etPurchaseDate.setSelection(8); } etCost.requestFocus(); dialog.dismise(); } }); dialog.show(); } 用于日期选择器xml
在保存数据之前,请使用此代码删除破折号Android str.插入(2,“-”); str.插入(5,'-'); etPurchaseDate.setText(str); }否则{ etPurchaseDate.setText(searchFrom); etPurchaseDate.requestFocus(); etPurchaseDate.setSelection(8); } etCost.requestFocus(); dialog.dismise(); } }); dialog.show(); } 用于日期选择器xml,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,在保存数据之前,请使用此代码删除破折号 if(etPurchaseDate.length()==10) { /* NO spaces \ No = \ NO - \ NO -- \ ONLY numbers \ NO - at the end*/ String tstr = "^(?!.*\\s)^(?=.*)^(?!-)(?!.*--)[0-9-]+(? <!
if(etPurchaseDate.length()==10) {
/* NO spaces \ No = \ NO - \ NO -- \ ONLY
numbers \ NO - at the end*/
String tstr = "^(?!.*\\s)^(?=.*)^(?!-)(?!.*--)[0-9-]+(?
<!-)$";
String astr = etPurchaseDate.getText().toString().trim();
Pattern regex = Pattern.compile(tstr);
Matcher regexMatcher = regex.matcher(astr);
boolean foundMatch = regexMatcher.find();
if (foundMatch == true ) {//IF FOUND REMOVE THE DASH'S AND STORE DATA
/* Routine puts DATE back in DB as 8 Character String REMOVES dashes "-" */
StringBuilder removeTHIS = new
StringBuilder(etPurchaseDate.getText().toString());
String value = removeTHIS.toString().replace("-", "");
etPurchaseDate.setText(value);
etCost.requestFocus();
purchase_date = value;
etCost.requestFocus();
//return;
Toast.makeText(DetailsActivity.this, "Date was Formatted
for Storage", Toast.LENGTH_LONG).show();
}
}
if(etPurchaseDate.length()==10){
/*没有空格\NO=\NO-\NO--\ONLY
数字\n否-结尾处*/
字符串tstr=“^(?。.*\\s)^(?=.*)^(?!)(?!.-)[0-9-]+(?)?
请详细说明这些问题……你不会问任何问题,你只是粘贴了你的代码,你展示了代码,没有问任何问题。问题是什么?你面临的问题是什么?不要只放代码。我的日期不被认为是简单的日期格式(“YYYY MM DD”)。在这种格式中,它采用类似“10月10日星期二00:00:00 GMT+2017年5:30”的日期,我使用日历控件在数据库“yyy-MM-dd”中添加日期。
public void onCreate(SQLiteDatabase sqLiteDatabase) {
String CREATE_TABLE="CREATE TABLE "+ TBNAME +" ( "+ID +" INTEGER PRIMARY KEY AUTOINCREMENT,"+DATE+" date,"+NAME+" TEXT)";
sqLiteDatabase.execSQL(CREATE_TABLE);
}
public ArrayList<ADate> retrieveByUseDate(String fromdate,String todate) throws ParseException {
SimpleDateFormat sfd = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sfd.parse(fromdate);
Date date2 = sfd.parse(todate);
SQLiteDatabase database = getReadableDatabase();
ArrayList<ADate> arrayList = new ArrayList<ADate>();
Cursor cursor = database.rawQuery("select * from " + TBNAME + " where DATE BETWEEN " + date1+ " AND " + date2, null);
System.out.println(cursor);
while (cursor.moveToNext()) {
int id = cursor.getInt(0);
String selectdate = cursor.getString(1);
String aname = cursor.getString(2);
ADate date = new ADate(id, selectdate, aname);
arrayList.add(date);
}
return arrayList;
}
public class RetrieveData extends AppCompatActivity implements View.OnClickListener{
Button btnFromDate,btnToDate,btnshow;
ListView lvRecord;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_retrieve_data);
btnFromDate= (Button) findViewById(R.id.btnFromDate);
btnToDate= (Button) findViewById(R.id.btnToDate);
btnshow= (Button) findViewById(R.id.btnShow);
lvRecord= (ListView) findViewById(R.id.lvRecord);
btnFromDate.setOnClickListener(this);
btnToDate.setOnClickListener(this);
btnshow.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.btnFromDate:
fromDate();
break;
case R.id.btnToDate:
toDate();
break;
case R.id.btnShow:
try {
dateRecord();
} catch (ParseException e) {
e.printStackTrace();
}
}
}
public void fromDate(){
Calendar c= Calendar.getInstance();
final int yr=c.get(Calendar.YEAR);
final int month=c.get(Calendar.MONTH);
final int day=c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dd=new DatePickerDialog(RetrieveData.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
String date=i+"-"+(i1+1)+"-"+i2;
btnFromDate.setText(date);
}
},yr,month,day);
dd.show();
}
public void toDate(){
Calendar c= Calendar.getInstance();
final int yr=c.get(Calendar.YEAR);
final int month=c.get(Calendar.MONTH);
final int day=c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dd=new DatePickerDialog(RetrieveData.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
String date=i+"-"+(i1+1)+"-"+i2;
btnToDate.setText(date);
}
},yr,month,day);
dd.show();
}
public void dateRecord() throws ParseException {
String fromdate=btnFromDate.getText().toString();
String todate=btnToDate.getText().toString();
DBHelper db=new DBHelper(RetrieveData.this);
ArrayList<ADate> aDateArrayList=db.retrieveByUseDate(fromdate,todate);
ArrayAdapter<ADate> aDateArrayAdapter=new ArrayAdapter<ADate>(RetrieveData.this,android.R.layout.simple_list_item_1,aDateArrayList);
lvRecord.setAdapter(aDateArrayAdapter);
}
public void findByDate(){
etPurchaseDate.setText("");
// DATE PICKER Sub Routine the XML file holds the Date Picker see
datepickerview.xml
final Dialog dialog = new
Dialog(DetailsActivity.this,R.style.DatePickerTheme);
/* the style and reference to the XML MUST be included in the lines os
code above and below */
/*
dialog.setContentView(R.layout.datepickerview);
dialog.setTitle("");
DatePicker picker = dialog.findViewById(R.id.datePicker);
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
picker.updateDate(mYear, mMonth, mDay);// Keeps Calendar initial view to
what today is!
picker.init(c.get(Calendar.YEAR), c.get(Calendar.MONTH),
c.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker picker, int year, int
monthOfYear, int dayOfMonth) {
String searchFrom = (String.valueOf(monthOfYear + 1)) +
(String.valueOf(dayOfMonth)) + String.valueOf(year);
StringBuilder str = new StringBuilder(searchFrom);
if (searchFrom.length() == 7) {
str.insert(2, '0');
str.insert(2, '-');
str.insert(5, '-');
etPurchaseDate.setText(str);
} else if (searchFrom.length() == 6) {
str.insert(0, '0');
str.insert(2, '0');
str.insert(2, '-');
str.insert(5, '-');
etPurchaseDate.setText(str);
} else {
etPurchaseDate.setText(searchFrom);
etPurchaseDate.requestFocus();
etPurchaseDate.setSelection(8);
}
etCost.requestFocus();
dialog.dismiss();
}
});
dialog.show();
}
for date picker xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_White"
android:orientation="vertical">
<DatePicker
android:id="@+id/datePicker"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:calendarViewShown="true"
android:headerBackground="@color/color_Purple"
android:theme="@style/DatePickerTheme" />
</LinearLayout>
if(etPurchaseDate.length()==10) {
/* NO spaces \ No = \ NO - \ NO -- \ ONLY
numbers \ NO - at the end*/
String tstr = "^(?!.*\\s)^(?=.*)^(?!-)(?!.*--)[0-9-]+(?
<!-)$";
String astr = etPurchaseDate.getText().toString().trim();
Pattern regex = Pattern.compile(tstr);
Matcher regexMatcher = regex.matcher(astr);
boolean foundMatch = regexMatcher.find();
if (foundMatch == true ) {//IF FOUND REMOVE THE DASH'S AND STORE DATA
/* Routine puts DATE back in DB as 8 Character String REMOVES dashes "-" */
StringBuilder removeTHIS = new
StringBuilder(etPurchaseDate.getText().toString());
String value = removeTHIS.toString().replace("-", "");
etPurchaseDate.setText(value);
etCost.requestFocus();
purchase_date = value;
etCost.requestFocus();
//return;
Toast.makeText(DetailsActivity.this, "Date was Formatted
for Storage", Toast.LENGTH_LONG).show();
}
}