Moment: рджрд╢рдорд▓рд╡ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди

рдХреЛ рдирд┐рд░реНрдорд┐рдд 22 рдЬреВрди 2016  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: moment/moment

(рджреЗрдЦреЗрдВ 2.13.0)
рдЖрдИрдПрд╕рдУ рдорд╛рдирдХ рдбреЗрдЯрдЯрд╛рдЗрдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ 'рдЬреЗрдб' рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рджрд╢рдорд▓рд╡ рд╕реЗрдХрдВрдб рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ .net рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо 7 рджрд╢рдорд▓рд╡ рд╕реНрдерд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - рдЬрдмрдХрд┐ рдХреНрд╖рдг.рдЬреЗрдПрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ 3 рджрд╢рдорд▓рд╡ рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдореИрдВрдиреЗ рдирд┐рд░реНрдорд╛рдг рд╡рд╕реНрддреБ рд╕реЗ рдкреВрд░реЗ 7 рдЕрдВрдХреЛрдВ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдВрджрд░ рдиреЗ рдлреЙрд░реНрдореЗрдЯрд░ (toISOString ()) рдХреЛ рдкреИрдЪ рдХрд░ рджрд┐рдпрд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рднрдпрд╛рдирдХ рд╣реИрдХ рд╣реИред рдкрд╛рд░реНрд╕рд░ рдХреЛ рдкреИрдЪ рдХрд░рдирд╛ рдЬреНрдпрд╛рджрд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ - рд▓реЗрдХрд┐рди рдореЗрд░реА рд╡рд░реНрддрдорд╛рди рд╕рдордЭ рд╕реЗ рдкрд░реЗ рд╣реИред

рд╢рд╛рдпрдж рдХреЛрдИ рдФрд░ рдХрд╛рдордХрд╛рдЬ рд╣реИ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдЧреА,

Ah. I hadn't realised this was a limitation of Javascript.

I had found the option for formatting that you had mentioned - but

рдореЗрд░реЗ рд▓рд┐рдП рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрди рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдВрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╢реВрдиреНрдп рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИрдВред

My 'monkey patch' looks at the creationData for the moment and

рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ (рдпрджрд┐ рдпрд╣ рд╣реИ
рдЙрдкрд▓рдмреНрдз)ред

//Monkey patch the moment library to use 7 decimal places for seconds in it's standard ISO format - to match C# moment.fn._oldToISOString = moment.fn.toISOString; moment.fn.toISOString = function () { try { var originalDateSplit = moment(this).creationData().input.split("."); var milliseconds = originalDateSplit[originalDateSplit.length - 1]; if (milliseconds.indexOf(this.milliseconds()) === 0) { return moment(this).format('YYYY-MM-DD[T]HH:mm:ss.') + milliseconds + "Z"; } else { return moment(this)._oldToISOString(); } } catch (error) { return moment(this)._oldToISOString(); } }
рдпрд╣ рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИ - рдФрд░ рдХреЗрд╡рд▓ рдЙрди рдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬреЛ рдереЗ
рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдЖрдИрдПрд╕рдУ рджрд┐рдирд╛рдВрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдпрд╣ рдЕрд╕рдВрдЧрдд рднреА рд╣реЛрдЧрд╛
рдорд┐рд▓реАрд╕реЗрдХрдВрдб () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рдеред рдПрдХ рдмреЗрд╣рддрд░ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕реЗ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП
рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдФрд░ рдХрд┐рд╕реА рднреА рджрд╢рдорд▓рд╡ рд╕реЗрдХрдВрдб рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдЦреАрдВрдЪреЗрдВ
рдкрд▓ рд╡рд╕реНрддреБ - рдлрд┐рд░ рд╣рдо рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдЙрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

However - I do appreciate that we are moving beyond the scope of the

рдкрд▓.рдЬреЗрдПрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ - рдпрд╣ рдЕрдм a . рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рдирд╣реАрдВ рд╣реЛрдЧрд╛
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджрд┐рдирд╛рдВрдХ рд╡рд╕реНрддреБред

Perhaps we could make this limitation a little clear in the moment.js

рджрд╕реНрддрд╛рд╡реЗрдЬ? рдЕрднреА рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдЯреНрд░рдВрдХреЗрд╢рди рд╕реЗ рдирд┐рд╣рд┐рдд рд╣реИ
рдЙрджрд╛рд╣рд░рдг рдХреЛрдб, рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд░реНрдгрд┐рдд рдирд╣реАрдВ - рдФрд░ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдирд╣реАрдВ рд╣реИ
рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпреЛрдВ рдХрд░рддрд╛ рд╣реИред

Thank you for your help Maggie - it is much appreciated.

рд╕рд╛рджрд░,
рдмреЗрди рд╣реИрдерд╡реЗ
рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдбреЗрд╡рд▓рдкрд░
рдбреЗрдЯрдо - рднреВ-рддрдХрдиреАрдХреА рдФрд░ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдирд┐рдЧрд░рд╛рдиреА

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЪреВрдВрдХрд┐ Moment.js рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рджрд┐рдирд╛рдВрдХ рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рддреАрди рджрд╢рдорд▓рд╡ рд╕реНрдерд╛рдиреЛрдВ (рдорд┐рд▓реАрд╕реЗрдХрдВрдб) рддрдХ рд╕реАрдорд┐рдд рд╣реИрдВред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдкрдХреЛ рд╕рд╛рдд рджрд╢рдорд▓рд╡ рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдпрд╛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдмрдВрджрд░ рдкреИрдЪ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдмрд╕ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдЕрд╡рдЧрдд рд░рд╣реЗрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рддреАрди рдХрд╛ рд╣реА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

moment('2016-01-01T05:21:22.1234567Z').format('YYYY-MM-DDTHH:mm:ss.SSSSSSS')
"2015-12-31T23:21:22.1230000"

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рд╢реВрдиреНрдп рднрд░рд╛ рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рджреЛрдиреЛрдВ рддрд░реАрдХреЛрдВ рд╕реЗ рд╕рд╛рдд рдЕрдВрдХ рд╣реИрдВред

рдореИрдЧреА,

Ah. I hadn't realised this was a limitation of Javascript.

I had found the option for formatting that you had mentioned - but

рдореЗрд░реЗ рд▓рд┐рдП рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрди рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдВрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╢реВрдиреНрдп рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИрдВред

My 'monkey patch' looks at the creationData for the moment and

рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ (рдпрджрд┐ рдпрд╣ рд╣реИ
рдЙрдкрд▓рдмреНрдз)ред

//Monkey patch the moment library to use 7 decimal places for seconds in it's standard ISO format - to match C# moment.fn._oldToISOString = moment.fn.toISOString; moment.fn.toISOString = function () { try { var originalDateSplit = moment(this).creationData().input.split("."); var milliseconds = originalDateSplit[originalDateSplit.length - 1]; if (milliseconds.indexOf(this.milliseconds()) === 0) { return moment(this).format('YYYY-MM-DD[T]HH:mm:ss.') + milliseconds + "Z"; } else { return moment(this)._oldToISOString(); } } catch (error) { return moment(this)._oldToISOString(); } }
рдпрд╣ рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИ - рдФрд░ рдХреЗрд╡рд▓ рдЙрди рдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬреЛ рдереЗ
рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдЖрдИрдПрд╕рдУ рджрд┐рдирд╛рдВрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдпрд╣ рдЕрд╕рдВрдЧрдд рднреА рд╣реЛрдЧрд╛
рдорд┐рд▓реАрд╕реЗрдХрдВрдб () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рдеред рдПрдХ рдмреЗрд╣рддрд░ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕реЗ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП
рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдФрд░ рдХрд┐рд╕реА рднреА рджрд╢рдорд▓рд╡ рд╕реЗрдХрдВрдб рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдЦреАрдВрдЪреЗрдВ
рдкрд▓ рд╡рд╕реНрддреБ - рдлрд┐рд░ рд╣рдо рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдЙрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

However - I do appreciate that we are moving beyond the scope of the

рдкрд▓.рдЬреЗрдПрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ - рдпрд╣ рдЕрдм a . рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рдирд╣реАрдВ рд╣реЛрдЧрд╛
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджрд┐рдирд╛рдВрдХ рд╡рд╕реНрддреБред

Perhaps we could make this limitation a little clear in the moment.js

рджрд╕реНрддрд╛рд╡реЗрдЬ? рдЕрднреА рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдЯреНрд░рдВрдХреЗрд╢рди рд╕реЗ рдирд┐рд╣рд┐рдд рд╣реИ
рдЙрджрд╛рд╣рд░рдг рдХреЛрдб, рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд░реНрдгрд┐рдд рдирд╣реАрдВ - рдФрд░ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдирд╣реАрдВ рд╣реИ
рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпреЛрдВ рдХрд░рддрд╛ рд╣реИред

Thank you for your help Maggie - it is much appreciated.

рд╕рд╛рджрд░,
рдмреЗрди рд╣реИрдерд╡реЗ
рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдбреЗрд╡рд▓рдкрд░
рдбреЗрдЯрдо - рднреВ-рддрдХрдиреАрдХреА рдФрд░ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдирд┐рдЧрд░рд╛рдиреА

рд╣рд╛рдп @Maggiepint ,

рдореИрдВ рд╡рд╣реА рдвреВрдВрдв рд░рд╣рд╛ рд╣реВрдВред moment.js рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдпрд╣ zerofill рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред

рдЪреВрдВрдХрд┐ рдкрд░рд┐рдгрд╛рдореА рдорд╛рди рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╢реВрдиреНрдп рдЗрд╕реЗ рдХреНрдпреЛрдВ рднрд░рддрд╛ рд╣реИЁЯдФЁЯдФЁЯдФ
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рд╣реИ:

const value = 1596099230963;
const formatString = 'MM/DD/YYYY HH:mm:ss.SSSSSS';
const val = moment.utc(value).format(formatString);
console.log(val);

рдпрд╣ рдкреНрд░рд┐рдВрдЯ 07/30/2020 08:53:50.963000 рдХреЗ рдмрдЬрд╛рдп 07/30/2020 08:53:50.963939

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ moment.js рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдиреЗ рдпрд╣ рд╢реВрдиреНрдп рднрд░рдг рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ 2.5ред

рдЬрдм рддрдХ moment.js рдкрд░ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рддрдХ рдореБрдЭреЗ рддрд╛рд░реАрдЦ рдореЗрдВ рд╕рд╣реА рдЬрд╛рдирдХрд╛рд░реА рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рдлреЙрд░реНрдореЗрдЯрд░ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдХреЛрдИ рдореМрдХрд╛ рд╣рдо рдпрд╣ рдмрджрд▓рд╛рд╡ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

dogukankotan picture dogukankotan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Delgan picture Delgan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

M-Zuber picture M-Zuber  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

nikocraft picture nikocraft  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

BonBonSlick picture BonBonSlick  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ