2010-01-10 5 views
2

J'ai 2 questions sur les dates.Questions sur les dates de javascript

Le premier est comment puis-je obtenir le "AM/PM" d'une date en Javascript?

la deuxième question est dire que j'ai ce code

var convertedStartDate = new Date(dueDate); 
    var month = convertedStartDate.getMonth() + 1; 
    var day = convertedStartDate.getDate(); 
    var year = convertedStartDate.getFullYear(); 
    var shortDueDate = month + "/" + day + "/" + year; 

Maintenant, comme vous pouvez le voir, je veux toujours ce format mm/jj/aaaa

Je me demande si dire dueDate est 1/9/2010 (mm/jj/aaaa) mais la personne l'a entré en jj/mm/aaaa (une autre version de format).

serait

mois = 1 jour = 9 année = 2010

Ou dois-je le dire en quelque sorte toujours convertir en mm/jj/aaaa? Ou fait-il son propre format de sorte qu'il obtiendrait toujours la bonne commande? C'est-à-dire que peu importe l'ordre dans lequel ils mettent la date, il y en aura toujours 9 comme jour.

+0

Si vous faites beaucoup de traitement de date ou que vous avez besoin de gérer de nombreuses façons différentes pour les utilisateurs, date.js est une bibliothèque qui couvre beaucoup de ces bases - http://www.datejs.com/ –

Répondre

0

Ici, pour cette solution:

now = new Date(); 

hour = now.getHours(); 
var tag = ""; 

if (hour >= 12) { 
    tag = "pm"; 
} else { 
    tag = "am"; 
} 

Quant à la deuxième partie de votre question, je voudrais juste faire les parties des champs de formulaire séparés, il n'y a vraiment aucun moyen autrement. Vous allez devoir écrire quelques indices dans votre formulaire.

+0

oh c'est une autre chose est-il un autre construit dans la chose à faire de 1-12 comme je l'ai eu 13 heures quand je le voulais à 1. – chobo2

+0

Malheureusement, non :( –

+0

L'exemple n'est pas tout à fait correct. if (hour> = 12) '. Sinon, midi midi serait" am " – Jacob

0

Vous devez toujours activer/convertir tout ce que l'utilisateur a entré dans un objet Date Javascript. Rappelez-vous - Javascript est local à l'ordinateur du client ... une personne aux États-Unis aura des paramètres de format différents d'une personne au Royaume-Uni ou en Chine. Pour garder les choses simples ... suggérez ou présentez un indice près de la zone de texte d'entrée, le format d'entrée désiré.

Ensuite, validez contre ce format en utilisant un Regex. De cette façon, vous êtes presque assuré d'obtenir la date désirée ... eh bien ... sauf si l'utilisateur a Javascript désactivé. LOL ... dans ce cas ... vous devez convertir côté serveur (vous devriez toujours le faire de toute façon).

0

Pour obtenir l'AM/PM d'une heure trouvé un ancien code que j'ai écrit il y a longtemps. Voir le (supprimer am/pm) ici, vous pouvez le remplacer par un get en utilisant la sous-chaîne.

function ValidateAdvancedTime(time, formatType){ 
    time = time.replace(".", ":"); 
    var newTime = time.substring(0, (time.indexOf(":") + 3)); // Strip out the seconds 
    var status = ValidateTime(newTime, formatType); 

    if(status == false) 
    return false; 

    var seconds = time.substring(time.indexOf(":") + 4, time.length); 
    if(seconds.length > 2) 
    **seconds = seconds.substring(0, 2);      // Remove any AM/PM afterwards** 

    if(!isNaN(seconds)) {           // Make sure its a number and it's between 0 and 59 
    if((seconds <= 59) && (seconds >= 0)) 
     return true; 
    } 
    return false; 

}

En ce qui concerne les dates aller, je ne l'ai jamais eu de problèmes de stockage ou 1/9/2010 01/09/2010 dans la base de données.