2010-02-10 34 views

Trả lời

10

Sau đây là một lựa chọn:

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

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

Lưu ý rằng nếu bạn đang sử dụng điều này để thao tác ngày, nó sẽ được khuyến khích sử dụng một số phương pháp cập nhật thao tác thay vào đó, chẳng hạn như những người trong DateJS.

1

Bạn direclty có thể sử dụng phương pháp replace() cùng với indexOf() của chuỗi trong Javascript.

+0

bạn có thể xây dựng một ví dụ? –

5

Một lựa chọn sẽ là

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

Điều đó sẽ không cho "Ngày 16 tháng 3 năm 2010 12:12 sáng"? Bạn có thể thay đổi nó thành 'test.replace (test.substring (13,16)," 12: ")' Tôi nghĩ (tương tự như phương thức haim). –

+1

@Dominic: Tốt điểm, nhưng thực sự nó sẽ thay thế nó một cách chính xác trong trường hợp này, bởi vì phương thức replace() JavaScript chỉ thay thế sự xuất hiện đầu tiên. Nhưng nếu ngày đó là "Mar 16 2000", nó sẽ không hoạt động. –

+0

@Daniel - thú vị - có vẻ như một triển khai lẻ của String :: replace. Cảm ơn vì sự đúng đắn của bạn! –

3

nếu nó luôn luôn là 00: trong giờ,

bạn chỉ có thể thay thế 00: với 12:

sử dụng replace(),

nếu không u cần tìm số indexOf số : ký tự,

và sau đó thay thế 2 chữ số trước đó bằng 12.

4

Một cách tiếp cận regex

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

Tôi thích cách tiếp cận này nhưng nếu có ai quan tâm về hiệu suất thì đây là một so sánh thử nghiệm: http://jsperf.com/substring-replace – user1510539

+1

right, regex thường chậm hơn. Rằng tôi sẽ không sử dụng bản thân mình vào năm 2016. – YOU

Các vấn đề liên quan