mirror of
https://github.com/marcogll/passkit-generator.git
synced 2026-03-15 11:25:17 +00:00
Merge pull request #155 from JensSpanier/master
Fix Date to W3C string converter
This commit is contained in:
@@ -712,12 +712,12 @@ describe("PKPass", () => {
|
||||
|
||||
describe("expiration date", () => {
|
||||
it("should set a pass expiration date", () => {
|
||||
pkpass.setExpirationDate(new Date(2023, 3, 10));
|
||||
pkpass.setExpirationDate(new Date("2023-04-09T17:00-07:00"));
|
||||
|
||||
const passjsonGenerated = getGeneratedPassJson(pkpass);
|
||||
|
||||
expect(passjsonGenerated.expirationDate).toBe(
|
||||
"2023-04-10T00:00:00Z",
|
||||
"2023-04-10T00:00:00.000Z",
|
||||
);
|
||||
});
|
||||
|
||||
@@ -808,11 +808,11 @@ describe("PKPass", () => {
|
||||
|
||||
describe("relevant date", () => {
|
||||
it("should set pass relevant date", () => {
|
||||
pkpass.setRelevantDate(new Date(2023, 3, 10, 14, 15));
|
||||
pkpass.setRelevantDate(new Date("2023-04-11T00:15+10:00"));
|
||||
|
||||
const passjsonGenerated = getGeneratedPassJson(pkpass);
|
||||
|
||||
expect(passjsonGenerated.relevantDate).toBe("2023-04-10T14:15:00Z");
|
||||
expect(passjsonGenerated.relevantDate).toBe("2023-04-10T14:15:00.000Z");
|
||||
});
|
||||
|
||||
it("should reset relevant date", () => {
|
||||
|
||||
@@ -32,8 +32,8 @@ describe("Utils", () => {
|
||||
});
|
||||
|
||||
it("should convert a Date object to a valid W3C date", () => {
|
||||
expect(processDate(new Date(2020, 6, 1, 0, 0, 0, 0))).toBe(
|
||||
"2020-07-01T00:00:00Z",
|
||||
expect(processDate(new Date("2020-07-01T02:00+02:00"))).toBe(
|
||||
"2020-07-01T00:00:00.000Z",
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
25
src/utils.ts
25
src/utils.ts
@@ -36,34 +36,11 @@ function dateToW3CString(date: Date) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const paddedMonth = padMeTwo(date.getMonth() + 1);
|
||||
const paddedDay = padMeTwo(date.getDate());
|
||||
const paddedHour = padMeTwo(date.getHours());
|
||||
const paddedMinutes = padMeTwo(date.getMinutes());
|
||||
const paddedSeconds = padMeTwo(date.getSeconds());
|
||||
|
||||
/**
|
||||
* Date.prototype.getTimezoneOffset returns the timezone UTC offset in
|
||||
* minutes of the local machine.
|
||||
*
|
||||
* That value should then be used to calculate the effective timezone as
|
||||
* string, but still that would be related to the machine and not to the
|
||||
* specified date.
|
||||
*
|
||||
* For this reason we are completing date with "Z" TimeZoneDesignator (TZD)
|
||||
* to say it to use local timezone.
|
||||
*
|
||||
* In the future we might think to integrate another parameter to represent
|
||||
* a custom timezone.
|
||||
*
|
||||
* @see https://www.w3.org/TR/NOTE-datetime
|
||||
*/
|
||||
|
||||
return `${date.getFullYear()}-${paddedMonth}-${paddedDay}T${paddedHour}:${paddedMinutes}:${paddedSeconds}Z`;
|
||||
}
|
||||
|
||||
function padMeTwo(original: string | number) {
|
||||
return String(original).padStart(2, "0");
|
||||
return date.toISOString();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user