NS_IMETHODIMP calDateTime::Compare(calIDateTime * aOther, int32_t * aResult) { NS_ENSURE_ARG_POINTER(aOther); NS_ENSURE_ARG_POINTER(aResult); bool otherIsDate = false; aOther->GetIsDate(&otherIsDate); icaltimetype a, b; ToIcalTime(&a); aOther->ToIcalTime(&b); // If either this or aOther is floating, both objects are treated // as floating for the comparison. if (!a.zone || !b.zone) { a.zone = NULL; a.is_utc = 0; b.zone = NULL; b.is_utc = 0; } if (mIsDate || otherIsDate) { *aResult = icaltime_compare_date_only_tz(a, b, cal::getIcalTimezone(mTimezone)); } else { *aResult = icaltime_compare(a, b); } return NS_OK; }
NS_IMETHODIMP calDateTime::Compare(calIDateTime * aOther, int32_t * aResult) { NS_ENSURE_ARG_POINTER(aOther); NS_ENSURE_ARG_POINTER(aResult); nsresult rv; nsCOMPtr<calIDateTimeLibical> icalother = do_QueryInterface(aOther, &rv); NS_ENSURE_SUCCESS(rv, rv); bool otherIsDate = false; aOther->GetIsDate(&otherIsDate); icaltimetype a, b; ToIcalTime(&a); icalother->ToIcalTime(&b); // If either this or aOther is floating, both objects are treated // as floating for the comparison. if (!a.zone || !b.zone) { a.zone = nullptr; a.is_utc = 0; b.zone = nullptr; b.is_utc = 0; } if (mIsDate || otherIsDate) { *aResult = icaltime_compare_date_only_tz(a, b, cal::getIcalTimezone(mTimezone)); } else { *aResult = icaltime_compare(a, b); } return NS_OK; }