mirror of
https://github.com/marcogll/passkit-generator.git
synced 2026-03-15 14: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", () => {
|
describe("expiration date", () => {
|
||||||
it("should set a pass 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);
|
const passjsonGenerated = getGeneratedPassJson(pkpass);
|
||||||
|
|
||||||
expect(passjsonGenerated.expirationDate).toBe(
|
expect(passjsonGenerated.expirationDate).toBe(
|
||||||
"2023-04-10T00:00:00Z",
|
"2023-04-10T00:00:00.000Z",
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -808,11 +808,11 @@ describe("PKPass", () => {
|
|||||||
|
|
||||||
describe("relevant date", () => {
|
describe("relevant date", () => {
|
||||||
it("should set pass 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);
|
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", () => {
|
it("should reset relevant date", () => {
|
||||||
|
|||||||
@@ -32,8 +32,8 @@ describe("Utils", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("should convert a Date object to a valid W3C date", () => {
|
it("should convert a Date object to a valid W3C date", () => {
|
||||||
expect(processDate(new Date(2020, 6, 1, 0, 0, 0, 0))).toBe(
|
expect(processDate(new Date("2020-07-01T02:00+02:00"))).toBe(
|
||||||
"2020-07-01T00:00:00Z",
|
"2020-07-01T00:00:00.000Z",
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
25
src/utils.ts
25
src/utils.ts
@@ -36,34 +36,11 @@ function dateToW3CString(date: Date) {
|
|||||||
return undefined;
|
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
|
* @see https://www.w3.org/TR/NOTE-datetime
|
||||||
*/
|
*/
|
||||||
|
|
||||||
return `${date.getFullYear()}-${paddedMonth}-${paddedDay}T${paddedHour}:${paddedMinutes}:${paddedSeconds}Z`;
|
return date.toISOString();
|
||||||
}
|
|
||||||
|
|
||||||
function padMeTwo(original: string | number) {
|
|
||||||
return String(original).padStart(2, "0");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user