Skip to content

Commit 0a6b7a3

Browse files
authored
Merge pull request microsoft#170518 from MonadChains/issue-151220/add-CURRENT-TIMEZONE-OFFSET-VARIABLE
Issue 151220/add current timezone offset variable
2 parents 467cf3b + 888b4b1 commit 0a6b7a3

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

src/vs/editor/contrib/snippet/browser/snippetVariables.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ export const KnownSnippetVariableNames = Object.freeze<{ [key: string]: true }>(
3030
'CURRENT_MONTH_NAME': true,
3131
'CURRENT_MONTH_NAME_SHORT': true,
3232
'CURRENT_SECONDS_UNIX': true,
33+
'CURRENT_TIMEZONE_OFFSET': true,
3334
'SELECTION': true,
3435
'CLIPBOARD': true,
3536
'TM_SELECTED_TEXT': true,
@@ -292,6 +293,14 @@ export class TimeBasedVariableResolver implements VariableResolver {
292293
return TimeBasedVariableResolver.monthNamesShort[this._date.getMonth()];
293294
} else if (name === 'CURRENT_SECONDS_UNIX') {
294295
return String(Math.floor(this._date.getTime() / 1000));
296+
} else if (name === 'CURRENT_TIMEZONE_OFFSET') {
297+
const rawTimeOffset = this._date.getTimezoneOffset();
298+
const sign = rawTimeOffset > 0 ? '-' : '+';
299+
const hours = Math.trunc(Math.abs(rawTimeOffset / 60));
300+
const hoursString = (hours < 10 ? '0' + hours : hours);
301+
const minutes = Math.abs(rawTimeOffset) - hours * 60;
302+
const minutesString = (minutes < 10 ? '0' + minutes : minutes);
303+
return sign + hoursString + ':' + minutesString;
295304
}
296305

297306
return undefined;

src/vs/editor/contrib/snippet/test/browser/snippetVariables.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,7 @@ suite('Snippet Variables Resolver', function () {
306306
assertVariableResolve3(resolver, 'CURRENT_MONTH_NAME');
307307
assertVariableResolve3(resolver, 'CURRENT_MONTH_NAME_SHORT');
308308
assertVariableResolve3(resolver, 'CURRENT_SECONDS_UNIX');
309+
assertVariableResolve3(resolver, 'CURRENT_TIMEZONE_OFFSET');
309310
});
310311

311312
test('Time-based snippet variables resolve to the same values even as time progresses', async function () {
@@ -322,6 +323,7 @@ suite('Snippet Variables Resolver', function () {
322323
$CURRENT_MONTH_NAME
323324
$CURRENT_MONTH_NAME_SHORT
324325
$CURRENT_SECONDS_UNIX
326+
$CURRENT_TIMEZONE_OFFSET
325327
`;
326328

327329
const clock = sinon.useFakeTimers();

0 commit comments

Comments
 (0)