Hour
to12Hour
Converts a 24-hour format hour to 12-hour format.
reference/hour/to12Hour.ts
import { to12Hour } from "datezone";
// Convert 24-hour format to 12-hour format
console.log("Converting 24-hour to 12-hour format:");
// Morning hours
console.log(`0 (midnight) → ${to12Hour(0)}`); // 12
console.log(`1 AM → ${to12Hour(1)}`); // 1
console.log(`11 AM → ${to12Hour(11)}`); // 11
// Noon and afternoon
console.log(`12 (noon) → ${to12Hour(12)}`); // 12
console.log(`13 (1 PM) → ${to12Hour(13)}`); // 1
console.log(`18 (6 PM) → ${to12Hour(18)}`); // 6
console.log(`23 (11 PM) → ${to12Hour(23)}`); // 11
// Loop through all hours
console.log("\nAll hours:");
for (let hour = 0; hour < 24; hour++) {
const period = hour < 12 ? "AM" : "PM";
console.log(`${hour}:00 → ${to12Hour(hour)}:00 ${period}`);
}
to24Hour
Normalizes an hour value to 24-hour format (0-23).
reference/hour/to24Hour.ts
import { to24Hour } from "datezone";
// Normalize hour values to 24-hour format
console.log("Normalizing hours to 24-hour format:");
// Normal hours (0-23)
console.log(`0 → ${to24Hour(0)}`); // 0
console.log(`12 → ${to24Hour(12)}`); // 12
console.log(`23 → ${to24Hour(23)}`); // 23
// Hours beyond 24 (wraps around)
console.log(`24 → ${to24Hour(24)}`); // 0
console.log(`25 → ${to24Hour(25)}`); // 1
console.log(`36 → ${to24Hour(36)}`); // 12
console.log(`48 → ${to24Hour(48)}`); // 0
// Examples with different hour values
console.log("\nVarious hour examples:");
const hours = [0, 1, 12, 13, 23, 24, 25, 47, 48, 49];
for (const hour of hours) {
console.log(`${hour} → ${to24Hour(hour)}`);
}
hour
Returns the hour of the day in the given timezone. Uses Intl.DateTimeFormat to get the hour in the given timezone. Returns the hour in ISO 8601 24-hour format (0-23)
reference/hour/hour.ts
import { hour } from "datezone";
// Current timestamp
const now = Date.now();
// Extract hour in different timezones
console.log("Extracting hour in different timezones:");
// UTC timezone
console.log(`UTC: ${hour(now, "UTC")}`);
// America/New_York (EST/EDT)
console.log(`Eastern: ${hour(now, "America/New_York")}`);
// Asia/Tokyo (JST)
console.log(`Tokyo: ${hour(now, "Asia/Tokyo")}`);
// Europe/London (GMT/BST)
console.log(`London: ${hour(now, "Europe/London")}`);
// Local timezone (system timezone)
console.log(`Local: ${hour(now, null)}`);
// Example with specific timestamp
const specificTime = new Date("2023-12-25T15:30:45Z").getTime();
console.log("\nSpecific time (3:30 PM UTC):");
console.log(`UTC: ${hour(specificTime, "UTC")}`);
console.log(`Pacific: ${hour(specificTime, "America/Los_Angeles")}`);
// Note about fixed offset timezones
console.log(
"\nNote: Fixed offset strings like '+05:30' are supported at runtime",
);
console.log("but not included in the TypeZone type for strict typing.");
addHours
Adds a specified number of hours to a timestamp.
reference/hour/addHours.ts
import { addHours } from "datezone";
// Current timestamp
const now = Date.now();
// Add hours to timestamp
console.log("Adding hours to timestamp:");
// Add positive hours
const inTwoHours = addHours(now, 2);
console.log(`Now: ${new Date(now).toISOString()}`);
console.log(`In 2 hours: ${new Date(inTwoHours).toISOString()}`);
// Add negative hours (subtract)
const twoHoursAgo = addHours(now, -2);
console.log(`2 hours ago: ${new Date(twoHoursAgo).toISOString()}`);
// Add many hours
const inOneDay = addHours(now, 24);
console.log(`In 24 hours: ${new Date(inOneDay).toISOString()}`);
// Example with specific timestamp
const specificTime = new Date("2023-12-25T10:00:00Z").getTime();
console.log("\nSpecific time examples:");
console.log(`Base: ${new Date(specificTime).toISOString()}`);
console.log(`+5 hours: ${new Date(addHours(specificTime, 5)).toISOString()}`);
console.log(`-3 hours: ${new Date(addHours(specificTime, -3)).toISOString()}`);
subHours
Subtracts a specified number of hours from a timestamp.
reference/hour/subHours.ts
import { subHours } from "datezone";
// Current timestamp
const now = Date.now();
// Subtract hours from timestamp
console.log("Subtracting hours from timestamp:");
// Subtract positive hours
const twoHoursAgo = subHours(now, 2);
console.log(`Now: ${new Date(now).toISOString()}`);
console.log(`2 hours ago: ${new Date(twoHoursAgo).toISOString()}`);
// Subtract negative hours (adds)
const inThreeHours = subHours(now, -3);
console.log(
`Subtracting -3 hours (adds 3): ${new Date(inThreeHours).toISOString()}`,
);
// Subtract many hours
const yesterday = subHours(now, 24);
console.log(`24 hours ago: ${new Date(yesterday).toISOString()}`);
// Example with specific timestamp
const specificTime = new Date("2023-12-25T15:30:00Z").getTime();
console.log("\nSpecific time examples:");
console.log(`Base: ${new Date(specificTime).toISOString()}`);
console.log(`-1 hour: ${new Date(subHours(specificTime, 1)).toISOString()}`);
console.log(`-6 hours: ${new Date(subHours(specificTime, 6)).toISOString()}`);
startOfHour
Returns the timestamp at the start of the hour (minutes, seconds, and milliseconds set to 0).
reference/hour/startOfHour.ts
import { startOfHour } from "datezone";
// Current timestamp
const now = Date.now();
// Get start of current hour
const startOfCurrentHour = startOfHour(now);
console.log(`Now: ${new Date(now).toISOString()}`);
console.log(
`Start of current hour: ${new Date(startOfCurrentHour).toISOString()}`,
);
// Example with specific timestamps
const timestamps = [
new Date("2023-12-25T15:30:45.123Z").getTime(),
new Date("2023-12-25T09:15:30.456Z").getTime(),
new Date("2023-12-25T00:59:59.999Z").getTime(),
new Date("2023-12-25T23:00:00.000Z").getTime(),
];
console.log("\nExamples with specific timestamps:");
for (const ts of timestamps) {
const startHour = startOfHour(ts);
console.log(
`${new Date(ts).toISOString()} → ${new Date(startHour).toISOString()}`,
);
}
// Demonstrate that it removes minutes, seconds, and milliseconds
console.log("\nDemonstrating precision:");
const precise = new Date("2023-12-25T14:27:38.542Z").getTime();
console.log(`Original: ${new Date(precise).toISOString()}`);
console.log(`Start of hour: ${new Date(startOfHour(precise)).toISOString()}`);
endOfHour
Returns the timestamp at the end of the hour (59 minutes, 59 seconds, 999 milliseconds).
reference/hour/endOfHour.ts
import { endOfHour } from "datezone";
// Current timestamp
const now = Date.now();
// Get end of current hour
const endOfCurrentHour = endOfHour(now);
console.log(`Now: ${new Date(now).toISOString()}`);
console.log(`End of current hour: ${new Date(endOfCurrentHour).toISOString()}`);
// Example with specific timestamps
const timestamps = [
new Date("2023-12-25T15:30:45.123Z").getTime(),
new Date("2023-12-25T09:15:30.456Z").getTime(),
new Date("2023-12-25T00:00:00.000Z").getTime(),
new Date("2023-12-25T23:45:59.999Z").getTime(),
];
console.log("\nExamples with specific timestamps:");
for (const ts of timestamps) {
const endHour = endOfHour(ts);
console.log(
`${new Date(ts).toISOString()} → ${new Date(endHour).toISOString()}`,
);
}
// Demonstrate precision - end of hour should be xx:59:59.999
console.log("\nDemonstrating precision:");
const precise = new Date("2023-12-25T14:27:38.542Z").getTime();
console.log(`Original: ${new Date(precise).toISOString()}`);
console.log(`End of hour: ${new Date(endOfHour(precise)).toISOString()}`);
// Show the exact millisecond difference
console.log(`\nDifference in milliseconds: ${endOfHour(precise) - precise}`);