下面列出了org.joda.time.MutableDateTime#setMinuteOfHour ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public Object convertToAvro(XMLGregorianCalendar xts) {
if (xts == null) {
return null;
}
MutableDateTime dateTime = new MutableDateTime();
try {
dateTime.setYear(xts.getYear());
dateTime.setMonthOfYear(xts.getMonth());
dateTime.setDayOfMonth(xts.getDay());
dateTime.setHourOfDay(xts.getHour());
dateTime.setMinuteOfHour(xts.getMinute());
dateTime.setSecondOfMinute(xts.getSecond());
dateTime.setMillisOfSecond(xts.getMillisecond());
DateTimeZone tz = DateTimeZone.forOffsetMillis(xts.getTimezone() * 60000);
if (tz != null) {
dateTime.setZoneRetainFields(tz);
}
return Long.valueOf(dateTime.getMillis());
} catch (IllegalArgumentException e) {
throw new ComponentException(e);
}
}
static long nextTimeAlarmWillWorkInMs(@NonNull Alarm alarm) {
final MutableDateTime mDateTime = MutableDateTime.now();
{ //creating a date of today with the hours and minutes of the alarm
mDateTime.setMillisOfSecond(0);
mDateTime.setSecondOfMinute(0);
mDateTime.setHourOfDay(alarm.getHour());
mDateTime.setMinuteOfHour(alarm.getMinute());
}
final int baldDay = getBaldDay();
{ //today or one time
if ((alarm.getDays() & baldDay) == baldDay) {//today may have an alarm
if ((alarm.getDays() == baldDay)) {
if (mDateTime.isBeforeNow())
mDateTime.addWeeks(1); //next week if today's time already passed
return mDateTime.getMillis();
} else {
if (mDateTime.isAfterNow())
return mDateTime.getMillis();
}
} else if (alarm.getDays() == -1) {
if (mDateTime.isBeforeNow())
mDateTime.addDays(1);
return mDateTime.getMillis();
}
}
int selectedBaldDay = baldDay;
{ //find next day
for (int i = baldDay << 1; i != baldDay; i <<= 1) {
if (i > D.Days.SATURDAY)
i = D.Days.SUNDAY;
if ((alarm.getDays() & i) == i) {
selectedBaldDay = i;
break;
}
}
}
int day = baldDayToJodaDay(selectedBaldDay);
mDateTime.setDayOfWeek(day);
if (mDateTime.isBeforeNow()) {
mDateTime.addWeeks(1);
}
return mDateTime.getMillis();
}
private static long nextTimeReminderWillWorkInMs(@NonNull Reminder reminder, Context context) {
final MutableDateTime mDateTime = MutableDateTime.now();
{ //creating a date of today with the hours and minutes of the alarm
mDateTime.setMillisOfSecond(0);
mDateTime.setSecondOfMinute(0);
mDateTime.setHourOfDay(BPrefs.getHour(reminder.getStartingTime(), context));
mDateTime.setMinuteOfHour(BPrefs.getMinute(reminder.getStartingTime(), context));
}
final int baldDay = getBaldDay();
final int days = reminder.getDays();
{ //today or one time
if ((days & baldDay) == baldDay) {//today may have an alarm
if ((days == baldDay)) {
if (mDateTime.isBeforeNow())
mDateTime.addWeeks(1); //next week if today's time already passed
return mDateTime.getMillis();
} else {
if (mDateTime.isAfterNow())
return mDateTime.getMillis();
}
} else if (days == -1) {
if (mDateTime.isBeforeNow())
mDateTime.addDays(1);
return mDateTime.getMillis();
}
}
int selectedBaldDay = baldDay;
{ //find next day
for (int i = baldDay << 1; i != baldDay; i <<= 1) {
if (i > D.Days.SATURDAY)
i = D.Days.SUNDAY;
if ((days & i) == i) {
selectedBaldDay = i;
break;
}
}
}
int day = baldDayToJodaDay(selectedBaldDay);
mDateTime.setDayOfWeek(day);
if (mDateTime.isBeforeNow()) {
mDateTime.addWeeks(1);
}
return mDateTime.getMillis();
}
@Test
public void testSearchDateField() throws Exception {
DateTimeFormatter dateFormatter = DateTimeFormat.forPattern("yyyy-MM-dd");
DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter timeFormatter = DateTimeFormat.forPattern("HH:mm:ss");
Instant now = Instant.now();
String currentDateFormatted = dateFormatter.print(now.getMillis());
SearchQuery s1 = clientService.newSearch();
s1.target("Check");
s1.condition(new SearchCondition("TranDate", "Date.onOrAfter", Arrays.asList("2017-01-01 12:00:00")));
s1.condition(new SearchCondition("CustomDateField1", "Date.onOrAfter", Arrays.asList("14:00:00")));
SearchRecord sr1 = (SearchRecord) s1.toNativeQuery();
assertNotNull(sr1);
Assert.assertEquals(TransactionSearch.class, sr1.getClass());
TransactionSearch search = (TransactionSearch) sr1;
assertNotNull(search.getBasic());
TransactionSearchBasic searchBasic = search.getBasic();
assertNotNull(searchBasic.getTranDate());
SearchDateField field1 = searchBasic.getTranDate();
Assert.assertEquals(SearchDateFieldOperator.ON_OR_AFTER, field1.getOperator());
assertNotNull(field1.getSearchValue());
assertNull(field1.getSearchValue2());
assertEquals("2017-01-01 12:00:00",
dateTimeFormatter.print((Long) calendarValueConverter.convertToAvro(field1.getSearchValue())));
SearchCustomFieldList customFieldList = searchBasic.getCustomFieldList();
assertNotNull(customFieldList);
assertNotNull(customFieldList.getCustomField());
Assert.assertEquals(1, customFieldList.getCustomField().size());
MutableDateTime controlDateTime = new MutableDateTime();
controlDateTime.setHourOfDay(14);
controlDateTime.setMinuteOfHour(0);
controlDateTime.setSecondOfMinute(0);
controlDateTime.setMillisOfSecond(0);
String controlTimeFormatted = timeFormatter.print(controlDateTime);
SearchDateCustomField customField1 = (SearchDateCustomField) customFieldList.getCustomField().get(0);
Assert.assertEquals(SearchDateFieldOperator.ON_OR_AFTER, customField1.getOperator());
assertNotNull(customField1.getSearchValue());
assertNull(customField1.getSearchValue2());
assertEquals(currentDateFormatted + " " + controlTimeFormatted,
dateTimeFormatter.print((Long) calendarValueConverter.convertToAvro(customField1.getSearchValue())));
}