gcalendar: add ydhms_diff()