{"id":3141,"date":"2017-08-21T14:47:46","date_gmt":"2017-08-21T14:47:46","guid":{"rendered":"https:\/\/answers.gurussolutions.com\/answers\/resolving-nan-nan-nan-date-errors-in-netsuite-server-side-scripts-2\/"},"modified":"2026-07-28T18:25:31","modified_gmt":"2026-07-28T18:25:31","slug":"resolution-des-erreurs-de-date-nan-nan-nan-dans-les-scripts-cote-serveur-de-netsuite","status":"publish","type":"qa_entry","link":"https:\/\/answers.gurussolutions.com\/fr\/answers\/resolution-des-erreurs-de-date-nan-nan-nan-dans-les-scripts-cote-serveur-de-netsuite\/","title":{"rendered":"R\u00e9solution des erreurs de date \u00ab NaN\/NaN\/NaN \u00bb dans les scripts c\u00f4t\u00e9 serveur de NetSuite"},"content":{"rendered":"","protected":false},"template":"","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","ga_subtitle":"Comprenez pourquoi le constructeur natif de l'objet Date en JavaScript peut g\u00e9n\u00e9rer des erreurs \u00ab NaN\/NaN\/NaN \u00bb lors de l'analyse de certains formats de cha\u00eenes de date dans les SuiteScripts c\u00f4t\u00e9 serveur de NetSuite, et d\u00e9couvrez les bonnes pratiques pour une gestion fiable des dates.","ga_short_answer":"Le constructeur natif de l'objet Date de JavaScript peut ne pas parvenir \u00e0 analyser certains formats de cha\u00eenes de date lorsqu'il est ex\u00e9cut\u00e9 dans le moteur JavaScript c\u00f4t\u00e9 serveur de NetSuite, ce qui entra\u00eene des erreurs \u00ab NaN\/NaN\/NaN \u00bb. Pour r\u00e9soudre ce probl\u00e8me, vous pouvez soit pr\u00e9-traiter la cha\u00eene de date afin de la mettre au format compatible, soit, pour un d\u00e9veloppement SuiteScript 2.x robuste et moderne, utiliser la fonction `parse()` du module `N\/format` afin d'assurer une conversion fiable des cha\u00eenes de date.","ga_scenario":"Un script NetSuite tente de r\u00e9cup\u00e9rer une date \u00e0 partir d\u2019un enregistrement personnalis\u00e9, dans lequel la date est stock\u00e9e sous forme de cha\u00eene de caract\u00e8res (par exemple, \u00ab Wed Mar 25 2015 15:16:58 GMT-0400 UTC \u00bb). Le script tente ensuite d\u2019utiliser cette cha\u00eene de caract\u00e8res pour initialiser un objet Date JavaScript, dans le but de le d\u00e9finir comme date de transaction pour les nouvelles factures. Bien que cette approche puisse fonctionner correctement dans les scripts c\u00f4t\u00e9 client, son ex\u00e9cution c\u00f4t\u00e9 serveur entra\u00eene une erreur, les journaux indiquant une tentative de d\u00e9finition de la date de transaction comme \u00ab NaN\/NaN\/NaN \u00bb. Ce probl\u00e8me survient m\u00eame lorsque l\u2019on tente de convertir l\u2019objet Date en cha\u00eene de caract\u00e8res \u00e0 l\u2019aide de fonctions telles que nlapiDateToString (une API SuiteScript 1.0) avant de d\u00e9finir le champ. Le probl\u00e8me principal r\u00e9side dans l\u2019incapacit\u00e9 du constructeur de l\u2019objet Date \u00e0 analyser ce format de cha\u00eene sp\u00e9cifique c\u00f4t\u00e9 serveur.","ga_solution":"L'erreur \u00ab NaN\/NaN\/NaN \u00bb qui survient lorsque vous tentez de d\u00e9finir une date de transaction dans un script c\u00f4t\u00e9 serveur NetSuite indique que le constructeur natif de l'objet Date de JavaScript (new Date(dateString)) n'est pas en mesure d'analyser correctement le format de cha\u00eene de date fourni. Cette divergence entre le comportement c\u00f4t\u00e9 client et c\u00f4t\u00e9 serveur est due \u00e0 des diff\u00e9rences dans la mani\u00e8re dont le moteur JavaScript traite certains formats de cha\u00eenes de date dans l\u2019environnement serveur NetSuite. La ligne de code probl\u00e9matique est :\n\n```\njavascript\nvar date1  new Date('Wed Mar 25 2015 15:16:58 GMT-0400 UTC');\n```\n\n. Une approche pour r\u00e9soudre ce probl\u00e8me, telle qu\u2019identifi\u00e9e lors de d\u00e9veloppements ant\u00e9rieurs en SuiteScript, consiste \u00e0 pr\u00e9traiter la cha\u00eene de date. Cela consiste g\u00e9n\u00e9ralement \u00e0 \u00ab supprimer certains caract\u00e8res superflus \u00bb de la cha\u00eene de date d\u2019origine afin de la transformer en un format que le constructeur natif de l\u2019objet Date peut analyser de mani\u00e8re fiable c\u00f4t\u00e9 serveur. La manipulation exacte de la cha\u00eene requise d\u00e9pend du format sp\u00e9cifique de la cha\u00eene de date d\u2019entr\u00e9e.\n\nPour un analyse et un formatage robustes des cha\u00eenes de date dans la version moderne de SuiteScript 2.x, la meilleure pratique recommand\u00e9e consiste \u00e0 utiliser le module N\/format. Ce module fournit des fonctions fiables pour convertir des cha\u00eenes en objets Date et inversement, en g\u00e9rant de mani\u00e8re coh\u00e9rente divers formats de date et d\u2019heure dans tous les environnements NetSuite. Bien que la fonction N\/format.parse() soit tr\u00e8s efficace pour les formats de date NetSuite standard (par exemple, format.Type.DATE, format.Type.DATETIME), pour les cha\u00eenes de date hautement personnalis\u00e9es ou complexes telles que \u00abMercredi 25 mars 2015 15:16:58 GMT-0400 UTC \u00bb, vous devrez peut-\u00eatre tout de m\u00eame pr\u00e9-traiter la cha\u00eene pour la mettre dans un format plus standard avant d\u2019utiliser format.parse(), ou d\u00e9terminer si la solution de contournement consistant \u00e0 manipuler la cha\u00eene d\u2019origine pour l\u2019objet Date natif est plus adapt\u00e9e \u00e0 votre cha\u00eene personnalis\u00e9e sp\u00e9cifique.\n\nPour convertir une cha\u00eene de date en objet Date, puis la reconvertir en cha\u00eene format\u00e9e \u00e0 l\u2019aide de N\/format :\n1. Chargez le module N\/format dans votre script SuiteScript 2.x.\n2. Utilisez format.parse() pour convertir la cha\u00eene en objet Date.\n3. Utilisez format.format() pour convertir l\u2019objet Date en une cha\u00eene au format NetSuite souhait\u00e9.\n\nExemple d\u2019utilisation de N\/format pour la gestion des dates :\n\n```\njavascript\n\/**\n * @NApiVersion 2.x\n * @NModuleScope SameAccount\n *\/\ndefine(['N\/format'], function(format) {\n    function handleDateConversion() {\n        \/\/ Example: A date string in a common NetSuite format\n        var standardDateString = '3\/25\/2015';\n\n        \/\/ \n1. Parse the string into a Date object\n        var dateObject = format.parse({\n            value: standardDateString,\n            type: format.Type.DATE\n        });\n\n        \/\/ dateObject is now a native JavaScript Date object (e.g., Wed Mar 25 2015 00:00:00 GMT-0400 (EDT))\n\n        \/\/ \n2. Format the Date object back into a string for a NetSuite field\n        var formattedStringForField = format.format({\n            value: dateObject,\n            type: format.Type.DATE\n        });\n\n        \/\/ formattedStringForField is now '3\/25\/2015' (or locale equivalent)\n\n        return formattedStringForField;\n    }\n\n    return {\n        handleDateConversion: handleDateConversion\n    };\n});\n```","ga_source_author":"","ga_source_author_email":"","ga_date_original":"2017-08-21T10:47:46-04:00","ga_date_verified":"2026-07-05","ga_source_subject":"Why does my date not work for Netsuite Invoice Field?","ga_ans_id":"ANS-1402","ga_publish_decision":"publish_with_edits","ga_staleness_risk":"high","ga_review_priority":"spot_check","ga_tier2_verdict":"partially_outdated","ga_tier2_concerns":"The `nlapiDateToString` function is a SuiteScript 1.0 API and has been replaced by the `N\/format` module in SuiteScript 2.x.; The recommended approach for converting strings to Date objects and vice-versa in SuiteScript 2.x is to use `N\/format.parse()` and `N\/format.format()`, respectively, rather than relying solely on the native JavaScript `Date` object constructor with arbitrary strings or `nlapiDateToString`.","ga_final_category":"SuiteScript Development","footnotes":""},"ga_category":[108,23,108],"ga_audience":[10],"ga_difficulty":[92],"class_list":["post-3141","qa_entry","type-qa_entry","status-publish","hentry","ga_category-developpement-suitescript","ga_category-suitescript-development","ga_audience-developer-suitescript","ga_difficulty-niveau-intermediaire"],"taxonomy_info":{"ga_category":[{"value":108,"label":"D\u00e9veloppement SuiteScript"},{"value":23,"label":"SuiteScript Development"},{"value":108,"label":"D\u00e9veloppement SuiteScript"}],"ga_audience":[{"value":10,"label":"Developer\/SuiteScript"}],"ga_difficulty":[{"value":92,"label":"Niveau interm\u00e9diaire"}]},"featured_image_src_large":[],"author_info":[],"comment_info":"","_links":{"self":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry\/3141","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry"}],"about":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/types\/qa_entry"}],"version-history":[{"count":1,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry\/3141\/revisions"}],"predecessor-version":[{"id":5061,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry\/3141\/revisions\/5061"}],"wp:attachment":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/media?parent=3141"}],"wp:term":[{"taxonomy":"ga_category","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_category?post=3141"},{"taxonomy":"ga_audience","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_audience?post=3141"},{"taxonomy":"ga_difficulty","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_difficulty?post=3141"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}