I had a peek at the script. There's just too much there for a quick gloss to try to implement a different calendar for different people, but the author updated it only 2 months ago, so you might reach out to them directly to make your request.
For now, I could see a workaround.
First, in terms of setup, give each of your characters a new attribute to represent their date. Call it "QuestTracker" (no quotation marks, though). Also, create a similar field on a mule character. I'll call that mule character "QuestMule", but you can name it whatever you need to. These attributes don't necessarily need to start in synch... especially if you were going to start one character out in a "2 weeks ago" type of vignette, but in general I would think that the adventure begins with some inciting incident that the characters are reacting to in their own ways. The point is to make sure the values in these fields are intentional, and reflect the way QuestTracker outputs the date (matching whatever calendar you're using).
Next, install this scriptlet in your game:
/* */
var API_Meta = API_Meta || {};
API_Meta.DateReport = { offset: Number.MAX_SAFE_INTEGER, lineCount: -1 };
{ try { throw new Error(''); } catch (e) { API_Meta.DateReport.offset = (parseInt(e.stack.split(/\n/)[1].replace(/^.*:(\d+):.*$/, '$1'), 10) - (4)); } }
on("ready", function()
{
const getDateReport = () => {
let muleName = 'QuestMule';
let attrName = 'QuestTracker';
let chars = findObjs({type: 'character'})
.map(c => {
return {
name: c.get('name'),
qdate: (findObjs({type: 'attribute', characterid: c.id, name: attrName})[0] || {get: () => ''}).get('current')
}
})
.filter(c => c.qdate && c.qdate.length)
.sort((a,b) => a.name < b.name ? -1 : 1);
let calendarMule = chars.filter(c => c.name === muleName)[0];
chars = chars.filter(c => c.name !== muleName);
if(!calendarMule || !chars.length) { return; }
let msg = chars.reduce((m,v) => {
m+=`{{${v.name}=${v.qdate}}}`;
return m;
}, `/w gm &{template:default} {{name=Date Report}} {{Game Date=${calendarMule.qdate}}}`);
sendChat('DateReport', msg, null, {noarchive: true});
};
on("chat:message", function(msg) {
if (msg.type=="api" && /^!questdates/i.test(msg.content)) { getDateReport(); }
});
getDateReport();
});
{ try { throw new Error(''); } catch (e) { API_Meta.DateReport.lineCount = (parseInt(e.stack.split(/\n/)[1].replace(/^.*:(\d+):.*$/, '$1'), 10) - API_Meta.DateReport.offset); } }
/* */
(If you use a different name for your mule other than "QuestMule", change it on line 8. If you use a different attribute name other than "QuestTracker", change it on line 9.)
When you reboot your sandbox (after installing that script, or when you start a new game session), you should see a message in the chat output alerting you to the local dates for each of your characters who have such an attribute:

If you want to see this report at any time during your game, just enter the below command in chat (or save this to a macro and assign it to a button):
!questdates
Now you know where everyone is in your game.
Next, for any given game session, you'll want to use the Adjust Date menu of QuestTracker to adjust the game date to match the date of the person/party with whom you are playing. During the session, use QuestTracker however you normally would to advance the day or generate weather.
At the end of your game session, compare the date reflected in QuestTracker with what you have stored in your mule the player characters who were active in that session. Update your PCs with the new current date as currently reflected in the QuestTracker interface (see below for using ChatSetAttr for this), and update your QuestMule date to whatever current date system you're using (if it were me, I would only change it if the date for this session and for these players had advanced beyond the date that was being tracked in the mule; that is, if the mule shows a date of May 1 and the characters in this session started on April 10 and adventured until their date was April 18, I would not update the mule... I would update the mule only if the characters had adventured past May 1, so that the mule date -- ie, the overall campaign date -- reflected the latest date any player in the campaign had reached).
The next time you play (with different players), update your QuestTracker date to the character dates, and do it all over again.
Using ChatSetAttr
You can use ChatSetAttr (and a button) to update the attributes. Put the following command in a macro:
!setattr --sel ?{Update campaign date?|No, |Yes, --name QuestMule} --QuestTracker|?{Date}
That will prompt you to choose whether to update the campaign date (your QuestMule date), as well as what date to use.