2010-02-10 8 views

Répondre

10

Ce qui suit est une option:

var myString = "Mar 16, 2010 00:00 AM"; 

myString = myString.substring(0, 13) + 
      "12" + 
      myString.substring(15, myString.length); 

Notez que si vous allez utiliser pour manipuler les dates, il serait recommandé d'utiliser des méthodes de manipulation de date au lieu, tels que ceux DateJS.

1

Vous pouvez utiliser la méthode direclty replace() avec indexOf() de chaîne en Javascript.

+0

Pouvez-vous élaborer un exemple? –

5

Une option serait

>>> var test = "Mar 16, 2010 00:00 AM"; 
>>> test.replace(test.substring(13,15),"12") 
+1

Cela ne donnerait-il pas "Mar 16, 2010 12:12 AM"? Vous pouvez le changer en 'test.replace (test.substring (13,16)," 12: ")' Je pense (similaire à la méthode de haim). –

+1

@Dominic: Bon point, mais en fait il va le remplacer correctement dans ce cas, car la méthode JavaScript replace() ne remplace que la première occurrence. Mais si la date était "16 mars 2000", cela n'aurait pas marché. –

+0

@Daniel - intéressant - ressemble à une implémentation étrange de String :: replace. Merci pour la correction! –

3

si elle est toujours 00: en heures,

vous pouvez simplement remplacer 00: avec 12:

utilisant replace(),

sinon u besoin trouver le indexOf le : caractère,

puis remplacez 2 chiffres avant avec 12.

4

Une approche regex

"Mar 16, 2010 00:00 AM".replace(/(.{13}).{2}/,"$112") 
Mar 16, 2010 12:00 AM 
+0

J'aime cette approche, mais si quelqu'un est préoccupé par la performance, voici une comparaison de test: http://jsperf.com/substring-replace – user1510539

+1

droite, regex sont généralement plus lent. Que je ne m'utiliserai pas en 2016. – YOU

Questions connexes