You need to sign in to do that
Don't have an account?
Comparing two date lists
I am attempting to compare the dates from a job schedule to dates from it's child assignment schedules so I can determine which dates have not yet been assigned. So far I have a list of both jobdates and assignmentdates. My initial thought was to convert those to sets and do a minusSet to determine which dates are left. However, I am having trouble converting my date list to a set. I am getting an error that says: Invalid initial value type LIST<Date__c> for SET<Date>
Here is my code for converting my job date list to a job date set:
private List<Date__c> jobdates{ get {
if(jobdates == null){
jobdates = new list<Date__c>();
jobdates = [select date__c, id from date__c where time_frame__c = :jobtimeframe];
}
return jobdates;
} set;}
private set<Date> setjobdates{ get {
if(setjobdates == null){
for(Date__c d : jobdates){
setjobdates.add(d.date__c);
}
}
return setjobdates;
} set; }
Now, I am wondering if there is an easy fix to this or if there is another way to simply compare my two lists (jobdates and assignmentdates) without converting them to a set?
Turns out I needed to format the dates. Here is the updated code in case it helps anyone in the future.
private List<Date__c> jobdates{ get {
if(jobdates == null){
jobdates = new list<Date__c>();
jobdates = [select date__c, id from date__c where time_frame__c = :jobtimeframe];
}
return jobdates;
} set; }
private set<String> setjobdates{ get {
if(setjobdates == null){
for(Date__c d : jobdates){
//setjobdates.addAll(d.date__c);
setjobdates.add(datetime.newInstance(d.date__c.year(), d.date__c.month(), d.date__c.day()).format('MM/dd/yyyy'));
}
}
return setjobdates;
} set; }
All Answers
You're trying to compare a Date__c to a Date, which are two different entities entirely. A Date__c is a custom object, that has fields like Id, Name, and Date__c, while Date is a standard object (formally System.Date), that has methods for manipulating calendar dates. You meant to use "setjobdates" and not "jobdates", which returns a type Set<Date>.
Turns out I needed to format the dates. Here is the updated code in case it helps anyone in the future.
private List<Date__c> jobdates{ get {
if(jobdates == null){
jobdates = new list<Date__c>();
jobdates = [select date__c, id from date__c where time_frame__c = :jobtimeframe];
}
return jobdates;
} set; }
private set<String> setjobdates{ get {
if(setjobdates == null){
for(Date__c d : jobdates){
//setjobdates.addAll(d.date__c);
setjobdates.add(datetime.newInstance(d.date__c.year(), d.date__c.month(), d.date__c.day()).format('MM/dd/yyyy'));
}
}
return setjobdates;
} set; }