<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Personally, I’d love to see something like this included as part of the temporal proposal (<a href="https://github.com/tc39/proposal-temporal">https://github.com/tc39/proposal-temporal</a>), as I’ve been experimenting with something very
 much like this here: <a href="https://github.com/rbuckton/temporal/blob/master/src/Duration.ts">
https://github.com/rbuckton/temporal/blob/master/src/Duration.ts</a>.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I think a Duration type that meshes with the proposed `plus` method on temporal objects would be a huge benefit.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Ron<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><b>From:</b> es-discuss <es-discuss-bounces@mozilla.org> <b>
On Behalf Of </b>Alexandre Morgaut<br>
<b>Sent:</b> Monday, March 4, 2019 10:47 AM<br>
<b>To:</b> es-discuss list <es-discuss@mozilla.org><br>
<b>Subject:</b> Proposal: Duration<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal"><span style="color:black">Here a proposal to make ECMAScript natively support a Duration Object<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">I talked about it a long time ago (2011) on the WHATWG mailing list in the context of the Timers API: <a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.w3.org%2FArchives%2FPublic%2Fpublic-whatwg-archive%2F2011Feb%2F0533.htm&data=02%7C01%7Cron.buckton%40microsoft.com%7Cb2fcb78ce9714918767e08d6a0d1d84f%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636873220570122388&sdata=bkZ0jPGkuKT3a35let3ZFVXrk2oq%2FeLzKN7xcuR1ym0%3D&reserved=0" target="_blank">https://lists.w3.org/Archives/Public/public-whatwg-archive/2011Feb/0533.htm</a><o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">l think that such a proposal would better take place in the core of the language and having worked on a framework date time APIs I tried to give this approach a better look.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">ECMAScript natively support Dates since its very first version<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">It started to support the ISO 8601 string format in edition 5<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">(15.9.1.15 Date Time String Format )<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">Durations like Dates can be very tricky, especially with I18n in mind, but the ECMA standard already had to be handled most of the Duration tricky part for the Date Object in EMCA 262 & ECMA 402.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">Duration, sometimes called TimeInterval, is a common concept supported by most languages or associated standard libs.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">In very short, Duration object would:<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">- support the ISO syntax in its contructor: new Duration('P6W') // for  Period 6 Weeks<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">- allow to handle Date diff operations<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">- allow to be interpreted by setTimeout() & setInterval()<o:p></o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="color:black">Please find below a draft exposing the concept<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">I'd be very happy if someone from TC39 would be interested to champion it<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FAMorgaut%2Fproposal-Duration&data=02%7C01%7Cron.buckton%40microsoft.com%7Cb2fcb78ce9714918767e08d6a0d1d84f%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636873220570132397&sdata=JJiv%2BitghIjSomxEuyT5Yic7IWrpSTBwmYWmBBnduUU%3D&reserved=0" target="_blank">https://github.com/AMorgaut/proposal-Duration</a><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">Regards,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">Alexandre.<o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</body>
</html>