边界公开,样例与测试共用
每一天怎么算,哪里故意不替你算
本站显示规划估算;正式申请仍应使用 IRCC 官方计算器并保存结果。下面的样例直接来自自动测试,不另写一套“看起来对”的演示数字。
共同日历口径
所有日期先转成不带时刻的加拿大日历日。离境日与返加日都视为在加拿大;同日往返不扣天。仍在境外时,从离境翌日起扣到计算日。跨时区飞行如造成护照、CBSA 与机票日期不一致,应以申请表要求和官方记录复核。
标记为“陪同公民”“加拿大企业境外全职”等例外的行程仍先按缺席扣除。只有用户看过证据要求后,才可在正式申请中主张;第一版工具不自动加回。
PR 五年尺
成为 PR 已满五年者看滚动五年窗口;未满五年者从成为 PR 当日累计,并另看首个五年结束前是否仍可能达到 730 日。枫叶卡到期不等于 PR 身份自动消失,工具也不作丧失身份认定。
入籍五年尺
签署申请日不计入;PR 后实际在加日按整天,资格期内合资格的 PR 前时间按规则折算并受上限约束。达到 1095 日仍不等于可递交,还要核报税、语言、考试与禁限情形。
税务与 OAS
税务尺只报告当年在加天数和 183 日信号;居民身份主要看居所联系与协定。OAS 的天数只是整理线索,通常居住仍要结合完整事实认定。
Ontario OHIP:滚动窗口
计算日向前回看一个完整的十二个月,核对是否有 153 天在安省,不再错用 1 月 1 日到计算日的日历年累计。对刚开始在安省居住的人,还另核开始日起首 183 天中至少 153 天;官方原文不是“首 212 天中 183 天”。212 天是任意十二个月内在安省以外超过该数时,可能需要重新申请的反向提示。
BC MSP:日历年
BC 按每个日历年至少在省内 6 个月的口径;月份长度不同,因此结果页显示当年已记录天数,不把六个月冒充成固定 183 天。度假通常允许每个日历年累计离省最多 7 个月;临时就业或度假的延长离省须事先向 HIBC 核准,可能最长 24 个连续月,不由本工具自动放行。
OAS 只显示天数线索,不换算小数年
结果不再把天数除以 365.2425 显示小数年,也不用小数年预测资格日或养老金比例。Service Canada 的参考指南把居住界定为“通常以加拿大为家”:实际在加不必然就是居民,一段时间也只能通常居住在一个国家。
证据清单以十八岁后各国居住期为主线,再整理出入境、住所、家庭、工作、就学、税务、医疗联系和法律身份文件。它是准备线索,不是 Service Canada 承诺接受的封闭材料表。
与 IRCC 官方计算器的差异
已知答案样例(32 个)
| 样例 | 边界 | 预期断言 |
|---|---|---|
no-trips-two-years | 无离境;PR 计计算日,入籍不计签署日 | pr.days=732;citizenship.prDays=731;citizenship.total=731 |
same-day-trip | 同日往返不扣天 | pr.days=732;citizenship.prDays=731 |
boundary-days-count | 离境日与返加日都算在加拿大 | pr.days=702;citizenship.prDays=701 |
ongoing-trip | 仍在境外时,离境翌日起扣到计算日 | pr.days=730;citizenship.prDays=730 |
cross-year-trip | 跨年行程只扣两个边界日之间的日子 | pr.days=731;citizenship.prDays=730 |
pre-pr-half-day | PR 前一年按半天折算 | citizenship.prePrRaw=365;citizenship.prePrCredit=182.5;citizenship.total=913.5 |
pre-pr-cap | PR 前折算最多 365 天 | citizenship.prePrCredit=365;citizenship.total=1096 |
pre-pr-trip | PR 前离境也从可折算实际在加天数扣除 | citizenship.prePrRaw=336;citizenship.prePrCredit=168;citizenship.total=899 |
five-year-slide | 已成为 PR 满五年时使用滚动窗口 | pr.windowStart=2021-01-02;pr.days=1826 |
trip-before-window | 窗口前行程不影响当前 PR 五年尺 | pr.days=1826 |
trip-overlaps-window-start | 跨窗口边界只扣窗口内缺席日 | pr.days=1796 |
under-five-one-year | 成为 PR 未满五年时从 PR 日累计 | pr.underFiveYears=true;pr.days=366;pr.firstFiveYearEnd=2030-01-01 |
exact-pr-threshold | 从 PR 日起连续 730 天达到门槛 | pr.days=730;pr.missing=0 |
one-day-pr-short | 门槛前一天缺一天 | pr.days=729;pr.missing=1 |
citizenship-sign-day-excluded | 入籍签署当日不计;跨闰年按真实日历日 | citizenship.prDays=1095;citizenship.missing=0 |
citizenship-one-short | 跨闰年时从 2023-01-03 到签署前一天是 1094 日 | citizenship.prDays=1094;citizenship.missing=1 |
leap-day-present | 闰日按普通日计入 | pr.days=3;citizenship.prDays=2 |
leap-day-absent | 跨闰日行程仅扣中间的闰日 | pr.days=2;citizenship.prDays=1 |
tax-year-183 | 税年在加 183 日触及天数信号 | tax.days=183;tax.signal=true |
tax-year-182 | 税年在加 182 日未触及信号 | tax.days=182;tax.signal=false |
ontario-presence-signal | 安省 153 日天数信号 | health.days=153;health.required=153;health.windowStart=2026-01-01 |
ontario-rolling-window-crosses-year | OHIP 向前回看十二个月,不在元旦归零 | health.days=365;health.windowStart=2025-03-02;health.windowEnd=2026-03-01;health.meetsRolling=true |
ontario-rolling-window-152 | OHIP 滚动窗口只有 152 天在省时不达 153 天信号 | health.days=152;health.meetsRolling=false |
ontario-initial-183-exact-pass | 新居民首 183 天中正好在安省 153 天 | health.initial.days=153;health.initial.complete=true;health.initial.meets=true;health.initial.periodEnd=2026-07-02 |
ontario-initial-183-one-short | 新居民首 183 天中只在安省 152 天 | health.initial.days=152;health.initial.complete=true;health.initial.meets=false |
ontario-initial-window-pending | OHIP 首 183 日窗口未结束时不提前判通过或失败 | health.initial.days=100;health.initial.complete=false;health.initial.meets=null |
bc-calendar-year-does-not-roll | BC MSP 按日历年从元旦起记录,不混入上年天数 | health.days=60;health.windowType=calendar_year;health.windowStart=2026-01-01;health.requiredMonths=6 |
oas-age-18-floor | OAS 居住年数不计十八岁前 | oas.days=366 |
legacy-single-import | 第一版单人 JSON 导入后成为一成员家庭 | members=1;memberName=成员 1 |
single-export-remains-legacy | 只有一人时导出仍可给第一版单人导入器读取 | legacyPrDate=2024-01-01;hasMembers=false |
citizen-spouse-period-matched | 勾选后且公民配偶的境外行程覆盖同期才标注对上 | matched=true;results=2 |
citizen-spouse-requires-checkbox | 未勾选时即使配偶与行程都对上也不标注成立 | matched=false |