current-time-timezone-server
Version:
MCP服务器,提供NTP校准的当前时间和时区相关功能,支持stdio和HTTP/SSE,可配置host和protocol,支持.env文件,返回指定时区的本地时间
43 lines • 1.98 kB
JavaScript
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