- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用日期选择器来选择特定日期。日期选择器不应允许选择星期日。直到现在我在选择后检测星期日并显示一条消息但如果日期选择器不允许星期日会更好。有办法做到这一点吗?
检测星期日的代码:
private static class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener
{
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
[...]
}
public void onDateSet(DatePicker view, int year, int month, int day)
{
Calendar now = Calendar.getInstance();
Calendar choosen = Calendar.getInstance();
choosen.set(year, month, day);
if (now.compareTo(choosen) < 0)
{
UserMessage.showMessage("The choosen date is in future", "Invalid date", getActivity());
return;
} else if (choosen.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
{
UserMessage.showMessage("The choosen date is on sunday!", "Invalid date",
getActivity());
return;
}
[...]
}
}
最佳答案
我通过使用日期选择器创建包含自定义 xml 布局的自定义对话框来解决此要求。
我为每个人创建了以下示例,他们需要一个具有特殊需求的日期选择器对话框,例如没有星期日,没有更早的日期可供选择的特定日期:
创建自定义日期选择器:
public void showDatePicker() {
final String dateFormatStr = "yyyyMMdd";
final String dateSearchFormatStr = "yyyy-MM-dd";
final String dateFormatStrGUI = "dd.MM.yyyy";
final String dateFormatStrGUIDatepickerDialog = "EEEE, dd.MM.yyyy";
final String minDateAvailable = "01.01.2005";
// Initializiation
LayoutInflater inflater = (LayoutInflater) getLayoutInflater();
final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
View customView = inflater.inflate(R.layout.activity_dateselect_dialog, null);
dialogBuilder.setView(customView);
final DatePicker datePicker = (DatePicker) customView.findViewById(R.id.activity_thumbnail_dateselect_dialog_datepicker);
final TextView dateTextView = (TextView) customView.findViewById(R.id.activity_thumbnail_dateselect_dialog_dateview);
final SimpleDateFormat dateTextViewFormatter = new SimpleDateFormat(Constants.dateFormatStrGUIDatepickerDialog, Locale.GERMANY);
// Minimum date
SimpleDateFormat formatter = new SimpleDateFormat(Constants.dateFormatStrGUI, Locale.GERMANY);
Calendar minDate = Calendar.getInstance();
try {
minDate.setTime(formatter.parse(Constants.minDateAvailable));
} catch (ParseException e) {
e.printStackTrace();
}
datePicker.setMinDate(minDate.getTimeInMillis());
// View settings
dialogBuilder.setTitle("Choose date");
Calendar choosenDate = Calendar.getInstance();
int year = choosenDate.get(Calendar.YEAR);
int month = choosenDate.get(Calendar.MONTH);
int day = choosenDate.get(Calendar.DAY_OF_MONTH);
try {
Date choosenDateFromUI = formatter.parse(newspaperDatePickerButton.getText().toString());
choosenDate.setTime(choosenDateFromUI);
year = choosenDate.get(Calendar.YEAR);
month = choosenDate.get(Calendar.MONTH);
day = choosenDate.get(Calendar.DAY_OF_MONTH);
} catch (Exception e) {
e.printStackTrace();
}
Calendar dateToDisplay = Calendar.getInstance();
dateToDisplay.set(year, month, day);
dateTextView.setText(dateTextViewFormatter.format(dateToDisplay.getTime()));
// Buttons
dialogBuilder.setNegativeButton("today", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
newspaperDatePickerButton.setText(R.string.date_latest_identifier);
newspaperDate = getString(R.string.date_latest_identifier);
controller.loadNewspaper(newspaperDate, model.getSubscriptions().get(newspaperEditionPosition), true);
dialog.dismiss();
}
});
dialogBuilder.setPositiveButton("Apply", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
SimpleDateFormat formatter = new SimpleDateFormat(Constants.dateFormatStrGUI, Locale.GERMANY);
Calendar now = Calendar.getInstance();
Calendar choosen = Calendar.getInstance();
choosen.set(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth());
if (now.compareTo(choosen) == 0) {
newspaperDate = getString(R.string.date_latest_identifier);
newspaperDatePickerButton.setText(newspaperDate);
} else {
newspaperDate = formatter.format(choosen.getTime());
newspaperDatePickerButton.setText(newspaperDate);
}
controller.loadNewspaper(newspaperDate, model.getSubscriptions().get(newspaperEditionPosition), false);
dialog.dismiss();
}
});
final AlertDialog dialog = dialogBuilder.create();
// Datepicker
datePicker.init(year, month, day, new DatePicker.OnDateChangedListener() {
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Calendar choosenDate = Calendar.getInstance();
choosenDate.set(year, monthOfYear, dayOfMonth);
Calendar now = Calendar.getInstance();
dateTextView.setText(dateTextViewFormatter.format(choosenDate.getTime()));
if (choosenDate.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY || now.compareTo(choosenDate) < 0) {
dateTextView.setTextColor(Color.parseColor("#ff0000"));
((Button) dialog.getButton(AlertDialog.BUTTON_POSITIVE)).setEnabled(false);
} else {
dateTextView.setTextColor(Color.parseColor("#000000"));
((Button) dialog.getButton(AlertDialog.BUTTON_POSITIVE)).setEnabled(true);
}
}
});
// Finish
dialog.show();
}
布局
<TextView
android:id="@+id/activity_thumbnail_dateselect_dialog_dateview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_margin="12dp"
android:text=""
android:layout_gravity="center"/>
<DatePicker
android:id="@+id/activity_thumbnail_dateselect_dialog_datepicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:calendarViewShown="false"/>
关于没有星期天的Android DatePicker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15678202/
我正在尝试使用 720Kb 日期选择器。 https://github.com/720kb/angular-datepicker 使用简单示例时: 我收到打击错误: angular.js:1
我开始使用react-datepicker组件。 https://github.com/Hacker0x01/react-datepicker 我运行了该示例,现在我想对其进行调整,使其没有初始值。示
我正在使用 Angular-ui 日期选择器,除了日期选择器的初始状态外,一切实际上都工作正常。我选择日期后,看起来不错。见下文: 初始状态 在选择器中选择日期后 所以,显然我在第一种情况下得到了日期
我需要为回历日期设置日期选择器。我可以使用 jquery datepicker 或 bootstrap datepicker。但是我写了这段代码
在选择范围时,我遇到了 jquery UI datepicker 的一个奇怪问题。在提出问题之前,我正在研究许多其他人编写的代码。他们以优化的顺序包含了 jquery 工具和 UI,因此所有功能都可以
我有两个剑道 DatePickers 来选择工作的开始和结束日期。作业由多个任务组成,其中包含自己的完成日期(任务在网格中列出,每条记录使用 kendo DatePicker 选择完成日期) 当用户设
我想将功能添加到 Material 日期选择器,以便能够选择周.. 因此,当我从一行中选择一个日期时,我希望它输出从一周开始到一周结束的日期范围。 我之前在常规 jquery 日历上这样做过--检查照
在 SwiftUI 中使用新的 (iOS 14) DatePicker,它按预期工作并且在模拟器和设备上看起来很好,但是一旦日历弹出,我会在输出窗口中收到几行警告。这有点烦人! 虽然日志贴在下面,但看
我将如何创建 doctrine_orm_datetime_range使用 jQuery UI 日期选择器的 Sonata Admin Bundle 中的过滤器? 我尝试了以下方法,但不起作用: pro
有人知道如何设置 gem bootstrap-datepicker-rails 吗?我按照 http://rubydoc.info/gems/bootstrap-datepicker-rails/0.
在 kartik DatePicker Yii2 中有没有办法 - 我可以禁用大于当前日期的日期? 例如:如果今天是 2016 年 3 月 14 日,则应禁用 2016 年 3 月 15 日的日历日期
在 UIDatePicker 我们可以做这样的事情 datePicker.timeZone = TimeZone(secondsFromGMT: 5*60*60) 为了指定日期选择器的时区。 但是如何
我在 FullCalendar ( http://www.eyecon.ro/datepicker/ ) 页面正下方添加了一个 datePicker ( http://fullcalendar.io
我在一个 Polymer 项目中有两个 Vaadin-datepickers。一个有开始日期,一个有结束日期。我想确保结束日期总是在开始日期之后。我阅读了 API 文档,他们说您可以使用 min ma
我正在Angular 6中搜索Datepicker,它可以显示基于回历日历的阿拉伯日期。 似乎找不到一个。是否有可用的东西,或者我们需要从头开始构建它。 最佳答案 Ng bootstrap或angul
JavaFX8 中是否有一种方法可以从 Java 代码中选择 DatePicker 中的日期(作为文本)?我想以这样一种方式激活带有 DatePicker 的控件,用户可以在不使用鼠标的情况下编辑日期
我在一个 Polymer 项目中有两个 Vaadin-datepickers。一个有开始日期,一个有结束日期。我想确保结束日期总是在开始日期之后。我阅读了 API 文档,他们说您可以使用 min ma
我正在尝试验证datepicker,因为startDate应始终小于EndDate。如果我手动更改日期,则 StartDate 有效,但 EndDate 无效。 我的JavaScript代码: $(d
我是 jquery 和 javascript 的菜鸟。因此,虽然我看过很多解决我的问题的 SO 帖子,但我无法将各种解决方案“组装”成适合我的东西。 我的上下文:查询结果显示在表单中。在每一行中,其中
我正在开发 Windows Phone 8.1 应用程序。我正在尝试使用 DatePickerFlyout 但没有取得适当的成功。我正在选择日期并尝试用选定的日期设置按钮内容,但它没有设置。当我调试以
我是一名优秀的程序员,十分优秀!