条带 billing_cycle_anchor 标签的时区问题

Tav*_*wal 1 stripe-payments

我想在该月的最后一天进行订阅,以便根据创建的订阅按比例收取费用。我使用下面的代码来计算该月的最后一天:

var date = new Date();
var lastDay = Date.UTC(date.getFullYear(), date.getMonth() + 1, 0);
var monthLastDay = Math.floor(lastDay/1000);
Run Code Online (Sandbox Code Playgroud)

我位于 IST 时区,所以我得到的 MonthLastDay 为 1527724800,它等于: 05/31/2018 @ 12:00am (UTC) 上面的代码按比例分配的金额工作正常,但订阅存在问题。我于 2018 年 5 月 11 日创建订阅。因此按比例分配的金额是从 5/11/2018 到 5/31/2018 计算的。但订阅是从 2018 年 5 月 31 日开始创建的。

我希望订阅安排在 2018 年 6 月 1 日。谁能帮助我并指出我哪里出错了。

注意:我将日期转换为 UTC 时区以避免不同时区问题。

Ada*_*eis 5

值得指出的是,计费锚点应以UTC时区指定。如果您在本地时区中指定此值,它将无法按预期工作。因此,无法根据您的客户或您自己的时区续订订阅。

我们在 NZDT 中为客户指定了 3 月 1 日,但 Stripe 将其转换为 2 月 28 日(格林威治标准时间),因此以该月 28 日为锚点创建后续发票。

无论您是否使用 moment 与此问题无关,如果 Stripe 更好地记录这一点并建议使用哪个时区,将会很有帮助。