有人可以帮助我吗?
我需要创建以下内容。
10月4日,星期日,欧洲中部时间08.30-10.30
在这种困难下,我需要能够显示本地时区?
有人可以建议我最好的方法吗,我可以使用moment.js吗?
谢谢
答案 0 :(得分:0)
您首先需要包括moment-timezone才能弄清楚“ CET”的含义。标准矩不知道如何将命名时区转换为偏移量。
我以ISO 8601格式显示了时刻日期对象,因此它们将采用格林尼治标准时间(比欧洲中部时间晚2小时)。
const grammar = /^(\w+) (\d+) (\w+) (\d+\.\d+) - (\d+\.\d+) (\w+)$/;
const inputFormat = 'dddd D MMMM HH.mm'
const input = 'Sunday 4 October 08.30 - 10.30 CET'
const m = input.match(grammar);
const startDateInput = `${m[1]} ${m[2]} ${m[3]} ${m[4]}`;
const endDateInput = `${m[1]} ${m[2]} ${m[3]} ${m[5]}`;
const timezone = m[6];
console.log(`Input (Start Date) : ${startDateInput}`);
console.log(`Input (End Date) : ${endDateInput}`);
const startDate = moment.tz(startDateInput, inputFormat, timezone);
const endDate = moment.tz(endDateInput, inputFormat, timezone);
console.log(`Output (Start Date) : ${startDate.toISOString()}`);
console.log(`Output (End Date) : ${endDate.toISOString()}`);
.as-console-wrapper { top: 0; max-height: 100% !important; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.31/moment-timezone-with-data.min.js"></script>
答案 1 :(得分:0)
我不确定您的确切问题。您可以使用JavaScript日期类。
//This will return time, "Mon Aug 10 2020 19:46:31 GMT+0530 (India Standard Time)"
const timeZone = /\((.*)\)/.exec(new Date().toString())[1];
// Here you can calculate offset hours
const offsetHours = new Date().getTimezoneOffset() / 60;
//This is the best way, beacuse sometimes offsethours might be wrong due to daylight saving rules
console.log(Intl.DateTimeFormat().resolvedOptions().timeZone)