2010-02-10 4 views

risposta

10

Quello che segue è una sola opzione:

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

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

Si noti che, se avete intenzione di usare questo per manipolare date, sarebbe consigliabile utilizzare alcuni metodi di manipolazione data, invece, come ad esempio quelli in DateJS.

1

È possibile utilizzare direttamene replace() metodo con indexOf() di corda in Javascript.

+0

si può elaborare un esempio? –

5

Una possibilità sarebbe

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

Non lo darebbe "Mar 16, 2010 12:12"? Puoi cambiarlo in 'test.replace (test.substring (13,16)," 12: ")' Penso (simile al metodo di haim). –

+1

@Dominic: buon punto, ma in realtà lo sostituirà correttamente in questo caso, perché il metodo JavaScript replace() sostituisce solo la prima occorrenza. Ma se la data fosse "16 mar 2000", non avrebbe funzionato. –

+0

@Daniel - interessante - sembra una strana implementazione di String :: replace. Grazie per la correzione! –

3

se è sempre 00: ore,

si può semplicemente sostituire 00: con 12:

utilizzando replace(),

se non u bisogno di trovare il indexOf il : carattere,

e quindi sostituire 2 cifre prima con 12.

4

Un approccio regex

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

Mi piace questo approccio, ma se qualcuno è preoccupato per le prestazioni, ecco un confronto di test: http://jsperf.com/substring-replace – user1510539

+1

a destra, le espressioni regolari sono generalmente più lente. Che non userò me stesso nel 2016. – YOU