ANS-0866 · DéVELOPPEMENT SUITESCRIPT
Comment comparer des dates entre différents fuseaux horaires dans les scripts NetSuite ?
Comparez avec précision les dates entre différents fuseaux horaires dans NetSuite SuiteScript, en tenant compte des paramètres par défaut du serveur.
Solution courte
Les scripts côté serveur de NetSuite définissent par défaut `new Date()` sur l'heure du Pacifique (PST/PDT), tandis que GA_KEEP_0002, dans les recherches enregistrées planifiées, reflète le fuseau horaire du serveur. Pour effectuer des comparaisons de dates précises entre différents fuseaux horaires, utilisez le module `N/format` de SuiteScript 2.x. Utilisez `format.format()` avec l’option `timezone` pour convertir et normaliser explicitement les dates.
Scénario
La comparaison de dates entre différents fuseaux horaires dans NetSuite peut entraîner des divergences. Une date définie par un utilisateur à Montréal (heure de l’Est, EST) peut être interprétée par un script côté serveur comme étant l’heure du Pacifique (PST/PDT) lors de l’utilisation de `new Date()`. Cela peut entraîner des comparaisons erronées, en particulier aux limites entre deux jours. Le problème est aggravé lorsque des scripts planifiés, exécutés par l’utilisateur « SYSTEM », récupèrent la valeur `{today}` à partir de recherches enregistrées, car cette valeur est également définie par défaut sur le fuseau horaire PST du serveur.
Solution
L'environnement côté serveur de NetSuite fonctionne selon l'heure du Pacifique (PST/PDT). Cela signifie que les objets new Date()
créés dans les scripts SuiteScript 2.x utiliseront par défaut le fuseau horaire PST. De même, lorsqu’un script planifié, exécuté par l’utilisateur « SYSTEM », récupère le jeton {today}
à partir d’une recherche enregistrée, cette valeur reflétera également le fuseau horaire PST du serveur. Ce comportement inhérent entraîne souvent des divergences lors de la comparaison de dates entre différents fuseaux horaires, car une date qui correspond déjà à « aujourd’hui » dans le fuseau horaire local d’un utilisateur (par exemple, Montréal EST) peut encore correspondre à « hier » dans le fuseau horaire PST du serveur.
Pour comparer avec précision des dates entre différents fuseaux horaires, l’approche recommandée dans SuiteScript 2.x consiste à utiliser le module N/format
. Ce module offre des fonctionnalités robustes pour la gestion des conversions de date et d’heure, permettant aux développeurs de définir explicitement le fuseau horaire cible pour les opérations de formatage et d’analyse.nn
Chargez le module
N/formatdans votre script SuiteScript 2.x :n
javascriptn/**n * @NApiVersion 2.xn * @NModuleScope SameAccountn */ndefine(['N/format'], function(format) {n // Your script logic heren});nn
Utilisez
format.format()pour convertir les dates dans un fuseau horaire commun (par exemple, le fuseau horaire de l’utilisateur ou l’UTC) avant de les comparer. Par exemple, pour convertir une date à l’heure normale de l’Est de Montréal (HNE) :n
javascriptnvar dateToConvert = new Date(); // This will be in PSTnvar montrealTime = format.format({n value: dateToConvert,n type: format.Type.DATETIME,n timezone: format.Timezone.AMERICA_NEW_YORK // Represents EST/EDTn});n// 'montrealTime' is now a string representing the date/time in Montreal's timezone.n// You might need to parse it back to a Date object or compare as strings depending on your needs.nn
Vous pouvez également convertir les deux dates dans un fuseau horaire de référence commun, tel que l’UTC, avant de les comparer.n
javascriptnvar dateInPST = new Date(); // Example date from scriptnvar dateFromUserField = new Date('January 31, 2012 00:00:00 PST'); // Example user date, assuming it was parsed into PSTnnvar dateInUTC_PST = format.format({n value: dateInPST,n type: format.Type.DATETIME,n timezone: format.Timezone.UTCn});nnvar dateInUTC_User = format.format({n value: dateFromUserField,n type: format.Type.DATETIME,n timezone: format.Timezone.UTCn});nn// Now compare dateInUTC_PST and dateInUTC_User (as strings or after parsing back to Date objects)nEn convertissant systématiquement toutes les dates dans un fuseau horaire unique et connu à l’aide de N/format
avant de les comparer, les développeurs peuvent garantir la précision des résultats, quels que soient le fuseau horaire par défaut du serveur ou les paramètres locaux de l’utilisateur.
Support expert NetSuite
Besoin d’aide pour cet enjeu NetSuite ?
Accompagnement-conseil et configuration pour Développement SuiteScript
