UNPKG

current-time-timezone-server

Version:

MCP服务器,提供NTP校准的当前时间和时区相关功能,支持stdio和HTTP/SSE,可配置host和protocol,支持.env文件,返回指定时区的本地时间

43 lines 1.98 kB
import ntp from "ntp-client"; export async function getNtpTime(ntpServer = "pool.ntp.org") { return new Promise((resolve, reject) => { ntp.getNetworkTime(ntpServer, 123, (error, date) => { error ? reject(error) : date ? resolve(date) : reject(new Error('NTP request failed')); }); }); } export function getLocalTimeInTimezone(date, timezone) { const targetTimezone = timezone || 'Asia/Shanghai'; try { // 获取目标时区的本地时间组件 const year = parseInt(date.toLocaleString('en-US', { timeZone: targetTimezone, year: 'numeric' })); const month = parseInt(date.toLocaleString('en-US', { timeZone: targetTimezone, month: 'numeric' })) - 1; const day = parseInt(date.toLocaleString('en-US', { timeZone: targetTimezone, day: 'numeric' })); const hour = parseInt(date.toLocaleString('en-US', { timeZone: targetTimezone, hour: 'numeric', hour12: false })); const minute = parseInt(date.toLocaleString('en-US', { timeZone: targetTimezone, minute: 'numeric' })); const second = parseInt(date.toLocaleString('en-US', { timeZone: targetTimezone, second: 'numeric' })); // 创建一个新的Date对象,使用目标时区的本地时间值 // 注意:这里创建的Date对象会表示目标时区的本地时间 return new Date(year, month, day, hour, minute, second); } catch (error) { throw new Error(`Invalid timezone: ${targetTimezone}`); } } export function formatLocalTime(date, timezone) { const targetTimezone = timezone || 'Asia/Shanghai'; return date.toLocaleString('en-US', { timeZone: targetTimezone, year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false, }); } export function getTimestamp(date) { return Math.floor(date.getTime() / 1000); } //# sourceMappingURL=time.js.map