I find part of the argument deeply flawed... In particular:
> Dart is not a widespread language compared to ... Kotlin, Swift
The main reason Kotlin and Swift are widespread is because they are platform languages themselves. Part of considering a cross-platform language is expressly to avoid/reduce the tether of platform languages.
While it seems that I have to remove several Flutter articles a week, I can see the appeal. I also see the appeal for React Native as well as the work on Xamarin Forms, and the MAUI support coming in .Net 6 (though lack of Linux targets in the near term is disappointing there).
Curious if WebGPU API works without a real GPU, like in container environments... will probably play around with this a little.
Import maps in the box is nice to see as well, I think once the majority of browsers has support, that we'll probably start to see more projects move away from build tooling, which I'm not sure is better or worse. I know that it may be better than the bundle bloat that many projects see currently.
Deno usually adds some interesting features in each minor release. Not sure why there was a downvote on this.
About the only time I use labels, is to pull a ripcord on existing code logic (usually larger than it should be) that would be much more cumbersome to refactor into separate function calls.
I don't use it a lot and usually have to lookup the syntax to double-check, as often I'll remember it as `:label` instead of `label:`. Same happens with shift/unshift, I almost always have to look it up as I remember backwards.
Added the "(Commercial Services)" tag... this article is a bit more than roughly a howto for a single commercial service, so didn't want to just delete it.
Looks like I can do what I need with tz-offset, which is only ~18k unpacked compared to close to moment/moment-timezone which are MASSIVE.
var tzOffset = require("tz-offset")
function todayAtTime(input /*17:00*/) {
const now = new Date();
const y = now.getFullYear();
const m = `0${now.getMonth() + 1}`.substr(-2);
const d = `0${now.getDate()}`.substr(-2);
const ret = `${y}-${m}-${d}T${input}`;
return ret;
}
function inDst(dtm) {
const dstStart = new Date(dtm.getFullYear(), 2/*Mar*/, 14, 2);
const dstEnd = new Date(dtm.getFullYear(), 10/*Nov*/, 7, 3);
return (dtm < dstStart || dtm > dstEnd);
}
function parseAsTimezone(input, timezone, noDst) {
const dtm = new Date(input);
dtm.setMinutes(
dtm.getMinutes()
+ (-1 * dtm.getTimezoneOffset())
+ tzOffset.offsetOf(timezone)
);
const dstStart = new Date(dtm.getFullYear(), 2/*Mar*/, 14, 2);
const dstEnd = new Date(dtm.getFullYear(), 10/*Nov*/, 7, 3)
if (noDst) return dtm;
switch (timezone) {
case "America/Phoenix":
// todo: other timezones without dst
break;
default:
if (inDst(dtm)) {
dtm.setHours(dtm.getHours() - 1);
}
}
return dtm;
}
function todayAtTimezone(time, timezone) {
return parseAsTimezone(todateAtTime(time), timezone);
}
// Phoenix same as Denver
console.log(parseAsTimezone('2021-01-01T15:00:00','America/Los_Angeles').toJSON());
console.log(parseAsTimezone('2021-01-01T15:00:00','America/Denver').toJSON());
console.log(parseAsTimezone('2021-01-01T15:00:00','America/Phoenix').toJSON());
// Phoenix same as LA
console.log(parseAsTimezone('2021-05-01T15:00:00','America/Los_Angeles').toJSON());
console.log(parseAsTimezone('2021-05-01T15:00:00','America/Denver').toJSON());
console.log(parseAsTimezone('2021-05-01T15:00:00','America/Phoenix').toJSON());
// Getting the Time set for a give IATA timezone TODAY
console.log(todayAtTimezone('15:00', 'America/Los_Angeles').toJSON())
console.log(todayAtTimezone('15:00', 'America/Denver').toJSON())
console.log(todayAtTimezone(‘15:00', 'America/Phoenix').toJSON())
Seems like there could be some interesting uses.. but as it stands, the README doesn't match the interfaces, and playing with it on RunKit, I couldn't manage to get it working.
What I'd really like to do, would be to parse a given date as a TimeZone...
for examples:
// local date, but not the right timezone
var dtm = new Date('2021-02-21T15:00:00');
// will now be local time on the host.
var fixed = global.parseWithTimezone(
'2021-02-21T15:00:00',
'America/Phoenix'
);
// correct UTC value from date time as Phoenix time.
fixed.toJSON(); // 2021-02-21T22:00:00.000Z
aside: This uses `moment` and `moment-timezone` which you should never use in the browser if you can avoid it.. these libraries are MASSIVE.
Looks like I can do what I need with tz-offset, which is only ~18k unpacked compared to close to moment/moment-timezone which are MASSIVE. var tzOffset = require("tz-offset") function todayAtTime(input /*17:00*/) { const now = new Date(); const y = now.getFullYear(); const m = `0${now.getMonth() + 1}`.substr(-2); const d = `0${now.getDate()}`.substr(-2); const ret = `${y}-${m}-${d}T${input}`; return ret; } function inDst(dtm) { const dstStart = new Date(dtm.getFullYear(), 2/*Mar*/, 14, 2); const dstEnd = new Date(dtm.getFullYear(), 10/*Nov*/, 7, 3); return (dtm < dstStart || dtm > dstEnd); } function parseAsTimezone(input, timezone, noDst) { const dtm = new Date(input); dtm.setMinutes( dtm.getMinutes() + (-1 * dtm.getTimezoneOffset()) + tzOffset.offsetOf(timezone) ); const dstStart = new Date(dtm.getFullYear(), 2/*Mar*/, 14, 2); const dstEnd = new Date(dtm.getFullYear(), 10/*Nov*/, 7, 3) if (noDst) return dtm; switch (timezone) { case "America/Phoenix": // todo: other timezones without dst break; default: if (inDst(dtm)) { dtm.setHours(dtm.getHours() - 1); } } return dtm; } function todayAtTimezone(time, timezone) { return parseAsTimezone(todateAtTime(time), timezone); } // Phoenix same as Denver console.log(parseAsTimezone('2021-01-01T15:00:00','America/Los_Angeles').toJSON()); console.log(parseAsTimezone('2021-01-01T15:00:00','America/Denver').toJSON()); console.log(parseAsTimezone('2021-01-01T15:00:00','America/Phoenix').toJSON()); // Phoenix same as LA console.log(parseAsTimezone('2021-05-01T15:00:00','America/Los_Angeles').toJSON()); console.log(parseAsTimezone('2021-05-01T15:00:00','America/Denver').toJSON()); console.log(parseAsTimezone('2021-05-01T15:00:00','America/Phoenix').toJSON()); // Getting the Time set for a give IATA timezone TODAY console.log(todayAtTimezone('15:00', 'America/Los_Angeles').toJSON()) console.log(todayAtTimezone('15:00', 'America/Denver').toJSON()) console.log(todayAtTimezone(‘15:00', 'America/Phoenix').toJSON())Seems like there could be some interesting uses.. but as it stands, the README doesn't match the interfaces, and playing with it on RunKit, I couldn't manage to get it working. What I'd really like to do, would be to parse a given date as a TimeZone... for examples: // local date, but not the right timezone var dtm = new Date('2021-02-21T15:00:00'); // will now be local time on the host. var fixed = global.parseWithTimezone( '2021-02-21T15:00:00', 'America/Phoenix' ); // correct UTC value from date time as Phoenix time. fixed.toJSON(); // 2021-02-21T22:00:00.000Z aside: This uses `moment` and `moment-timezone` which you should never use in the browser if you can avoid it.. these libraries are MASSIVE.