Étant débutant, je rencontre quelques problèmes. Même moi, je ne trouve aucune solution en la recherchant sur Google.
Problème: dans ma langue (bengali), toute la journée a cinq cordes (Sokal, Dupur, Bikal, Sondha, Raat) au lieu des deux cordes internationales (Am, Pm).
J'ai écrit celui-ci, mais ne m'a pas beaucoup aidé.
6Am to 11Am as 06:00 Sokal; 12Pm to 3pm as 12:00 Dupur; 4 Pm to 5Pm as 04:00 Bikal; 6 pm to 7pm as 06:00 Sondha; 8 pm to 5Am as 08:00 Raat;
Je veux imprimer:
var time = new Date(); var hour = time.getHours(); var text = "sokal"; if(hour == 13){ text = "dupur"; }else if(hour == 16){ text = "bikal"; }else if(hour == 18){ text = "sondha"; }else if(hour == 20){ text = "raat" } console.log(text);
4 Réponses :
function getHourName(hour){ if(hour > 11 && hour < 16){ return "Dupur" } if(hour > 15 && hour < 18){ return "Bikal" } if(hour > 17 && hour < 20){ return "Sondha" } if(hour > 19 || hour < 6){ return "Raat" } if(hour > 5 && hour < 12){ return "Sokal" } } Array.from({ length: 24 }).forEach((_, hour) => { console.log(`${hour}:00-${hour}:59 ${getHourName(hour)}`); });
hour => 20 && hour <= 5
échouera de 12h à 5h
J'attendais "Raat" à l'heure actuelle (02:38:52). mais il a renvoyé "Dupur"
D'accord, réparé. Désolé pour mon erreur :)
Peut-être qu'il a besoin d'un autre changement. Pouvez-vous vérifier la deuxième ligne?
Vous devriez comparer l'heure à différentes plages, en utilisant opérateurs relationnels tels que Notez également que vous n'avez pas nécessairement besoin de faire deux comparaisons pour chaque plage. Si l'heure n'est pas inférieure à 6, vous savez qu'elle est supérieure ou égale à 7, alors profitez du Si je comprends vos exigences, cela ressemblerait à quelque chose comme ceci: Le formatage précis des dates peut être assez impliqué avec différents paramètres régionaux -des règles spécifiques, mais encore une fois, en fonction de ce que vous avez décrit, voici un essai: Bien sûr, des esprits plus grands que le mien ont consacré beaucoup de temps à résoudre ce genre de problème. Je vous recommande de prendre un butin au standard Méthode Si vous êtes à l'aise avec la gestion des packages npm, vous pouvez également jeter un œil à quelque chose comme Encore une fois, ce n'est peut-être pas le exact résultat souhaité, mais c'est probablement beaucoup plus facile et moins sujet aux erreurs que d'essayer d'implémenter vous-même la logique équivalente. ,
>
, ou
> =
. Par exemple, si l'heure est inférieure à 6, la période est raat
. else
pour réduire la complexité de chaque suivant si
.var date = require("date-and-time");
let now = new Date();
date.locale('bn');
date.format(now, 'HH:mm A');
// 16:33 দà§à¦ªà§à¦°
<input id="in" type="time"><br>
<span id="en-US"></span><br>
<span id="bn"></span><br>
<span id="bn-u-hc-h24"></span><br>
span {
font-family: monospace;
}
span::after {
content: attr(id);
padding: 0 1em;
}
const outputs = ['en-US', 'bn', 'bn-u-hc-h24'];
var input = document.getElementById("in");
function formatOutput() {
const date = new Date(`01 Jan 1970 ${input.value}`);
outputs.forEach(id => {
const output = document.getElementById(id);
output.innerText = date.toLocaleTimeString(id);
});
}
input.addEventListener('change', formatOutput);
input.value = `${new Date().getHours()}:${new Date().getMinutes()}`;
formatOutput();
toLocaleTimeString
. Cela peut ne pas exactement répondre à vos besoins, mais il est généralement assez proche pour satisfaire la plupart des utilisateurs et prendra en charge tous les cas extrêmes plus compliqués qu'il est difficile pour un développeur catch: <input id="in" type="time">
<span id="out"></span>
#out { font-family: monospace }
function fmtPeriod(hour) {
if (hour < 6) {
return "Raat";
} else if (hour < 12) {
return "Sokal";
} else if (hour < 16) {
return "Dupur";
} else if (hour < 18) {
return "Bikal";
} else if (hour < 20) {
return "Sondha";
} else {
return "Raat"
}
}
function fmtHour(hour) {
return `0${hour % 12 || 12}`.substr(-2);
}
function fmtMinutes(minutes) {
return `0${minutes}`.substr(-2);
}
var input = document.getElementById("in");
var output = document.getElementById("out");
function formatOutput() {
const date = new Date("01 Jan 1970 " + input.value);
const hour = date.getHours();
const min = date.getMinutes();
output.innerText = `${fmtHour(hour)}:${fmtMinutes(min)} ${fmtPeriod(hour)}`
}
input.addEventListener('change', formatOutput);
input.value = `${new Date().getHours()}:${new Date().getMinutes()}`;
formatOutput();
date et heure
( essayez dans RunKit ):function fmtPeriod(hour) {
if (hour < 6) {
return "Raat";
} else if (hour < 12) {
return "Sokal";
} else if (hour < 16) {
return "Dupur";
} else if (hour < 18) {
return "Bikal";
} else if (hour < 20) {
return "Sondha";
} else {
return "Raat"
}
}
Peut-être n'ai-je pas été en mesure de le préciser. En fait, je m'attends à quelque chose comme ceci: L'heure actuelle devrait apparaître comme: (02:44:53 Raat) au lieu de (02:44:53 AM). Edit: je suis trop proche de ma réponse. J'ai juste besoin de changer les deux dernières lignes pour ne pouvoir obtenir qu'une seule valeur à la fois.
@KBTonmoy J'ai restructuré ma réponse pour que vous puissiez, espérons-le, avoir une idée plus claire de ce qui se passe. J'ai également essayé de fournir d'autres suggestions sur la façon dont vous pourriez peut-être aborder ce problème différemment.
Tu es incroyable. J'ai besoin d'une autre faveur. Pouvez-vous s'il vous plaît changer le champ de saisie avec uniquement la syntaxe Document.write? Je souhaite utiliser le script dans le script d'action d'Adobe Flash.
@KBTonmoy La démo ne fonctionnerait pas vraiment dans ce cas, mais tout ce que vous auriez à faire dans votre code est de remplacer output.innerText = ...;
par document.write (. ..);
Une alternative un peu plus courte avec un tableau de recherche:
function format(date) { var arr = ['Sokal', 'Sokal', 'Sokal', 'Dupur', 'Dupur', 'Bikal', 'Sondha']; return date.toJSON().slice(11, 19) + ' ' + (arr[date.getUTCHours() - 6 >> 1] || 'Raat'); } for (var i = 0; i < 24; i++) console.log( format( new Date('0 ' + i + ':0Z') ) )
Vous pouvez utiliser la bibliothèque JavaScript MomentJs ( https://momentjs.com/ ).
MomentJS prend en charge plusieurs paramètres régionaux, par exemple Bengali.
<script src="moment.js"></script> <script> moment().format(); </script>
Si vous utilisez un gestionnaire de paquets comme npm, il est très facile d'intégrer momentJS dans votre application.
Par exemple: npm install moment --save # npm
Ou d'autres gestionnaires de packages:
npm install moment var moment = require('moment'); moment().format();
Exemple d'utilisation dans Node.js:
yarn add moment # Yarn Install-Package Moment.js # NuGet spm install moment --save # spm meteor add momentjs:moment # meteor bower install moment --save # bower (deprecated)
Exemple d'utilisation dans le navigateur:
moment.locale(); // bn moment().format('LT'); // রাত ৯:à§«à§® সমৠmoment().format('LTS'); // রাত ৯:à§«à§®:৩৪ সমৠmoment().format('L'); // ২৪/০৪/২০১৯ moment().format('l'); // ২৪/৪/২০১৯ moment().format('LL'); // ২৪ à¦à¦ªà§à¦°à¦¿à¦² ২০১৯ moment().format('ll'); // ২৪ à¦à¦ªà§à¦° ২০১৯ moment().format('LLL'); // ২৪ à¦à¦ªà§à¦°à¦¿à¦² ২০১৯, রাত ৯:à§«à§® সমৠmoment().format('lll'); // ২৪ à¦à¦ªà§à¦° ২০১৯, রাত ৯:à§«à§® সমৠmoment().format('LLLL'); // বà§à¦§à¦¬à¦¾à¦°, ২৪ à¦à¦ªà§à¦°à¦¿à¦² ২০১৯, রাত ৯:à§«à§® সমৠmoment().format('llll'); // বà§à¦§, ২৪ à¦à¦ªà§à¦° ২০১৯, রাত ৯:à§«à§® সমà§
De plus, il y a beaucoup plus d'options pour gérer les dates avec le framework momentJs. Découvrez-le: https://momentjs.com/docs/
En fait, je souhaite exécuter le script dans Adobe Flash Actionscript. Je n'ai trouvé aucun moyen d'intégrer Momentjs dans un fichier Flash. Au fait, cela m'aidera sûrement à l'avenir.
Vérifiez une plage:
if (hour> = 12 && hour <= 15) text = "Dupur";
etc.