Máy chủ đang gửi chuỗi theo định dạng sau: 18:00:00
. Đây là giá trị thời gian trong ngày độc lập với bất kỳ ngày nào. Làm thế nào để chuyển đổi nó thành 6:00PM
trong Javascript? Tôi có thể thêm vào ngày hôm nay như một chuỗi giá trị được gửi bởi máy chủ và sau đó phân tích các giá trị kết hợp và sau đó thử phương thức .toTimeString()
của đối tượng Date, nhưng định dạng mà phương thức thời gian phát ra là 24 giờ với một giây. Tôi có thể viết một chức năng, nhưng có cái gì đó được xây dựng trong?Javascript: chuyển đổi chuỗi thời gian 24 giờ trong ngày thành 12 giờ với AM/PM và không có múi giờ
Javascript: chuyển đổi chuỗi thời gian 24 giờ trong ngày thành 12 giờ với AM/PM và không có múi giờ
Trả lời
Không có gì được xây dựng trong, giải pháp của tôi sẽ như sau:
function tConvert (time) {
// Check correct time format and split into components
time = time.toString().match (/^([01]\d|2[0-3])(:)([0-5]\d)(:[0-5]\d)?$/) || [time];
if (time.length > 1) { // If time format correct
time = time.slice (1); // Remove full string match value
time[5] = +time[0] < 12 ? 'AM' : 'PM'; // Set AM/PM
time[0] = +time[0] % 12 || 12; // Adjust hours
}
return time.join (''); // return adjusted time or original string
}
tConvert ('18:00:00');
Chức năng này sử dụng cụm từ thông dụng để xác nhận chuỗi thời gian và chia thành các phần thành phần của nó. Cũng lưu ý rằng các giây trong thời gian có thể được bỏ qua tùy ý. Nếu thời gian hợp lệ được trình bày, nó được điều chỉnh bằng cách thêm chỉ báo AM/PM và điều chỉnh giờ.
Giá trị trả lại là thời gian đã điều chỉnh nếu thời gian hợp lệ được hiển thị hoặc chuỗi gốc.
Xem jsFiddle: http://jsfiddle.net/ZDveb/
Để nhận được AM/PM, Kiểm tra xem phần giờ nhỏ hơn 12, sau đó là AM, khác PM.
Để nhận giờ, hãy (hour % 12) || 12
.
này nên làm điều đó:
var timeString = "18:00:00";
var H = +timeString.substr(0, 2);
var h = H % 12 || 12;
var ampm = (H < 12 || H === 24) ? "AM" : "PM";
timeString = h + timeString.substr(2, 3) + ampm;
Đó là giả định rằng AM lần được định dạng, ví dụ như, 08:00:00
. Nếu họ được định dạng mà không có sự zero hàng đầu, bạn sẽ phải kiểm tra vị trí của ruột kết đầu tiên:
var hourEnd = timeString.indexOf(":");
var H = +timeString.substr(0, hourEnd);
var h = H % 12 || 12;
var ampm = (H < 12 || H === 24) ? "AM" : "PM";
timeString = h + timeString.substr(hourEnd, 3) + ampm;
nhờ hàm sử dụng chất nền. Vì giải pháp của HBP loại bỏ phần giây, tôi cho anh ta kiểm tra màu xanh lục mặc dù câu trả lời của bạn là câu trả lời đầu tiên. Bên cạnh đó, anh ấy chỉ ở mức 3K; bạn đang lăn theo điểm với 21K :-) – Tim
Ah. Bằng cách nào đó tôi đã không nhận thấy rằng bạn muốn loại bỏ các giây. – gilly3
nếu 12:30 PM – iamsaksham
nghiên cứu cùng một câu hỏi này, tôi đã đi qua một số phức tạp, khó hiểu giải pháp, và sau đó nó chợt nhận ra tôi: Có một giải pháp rất đơn giản mà không dựa vào khó các biểu thức chính quy hoặc mã phức tạp khác. Trừ khi tôi thiếu điều gì đó hiển nhiên, đây là giải pháp cực kỳ đơn giản, dễ hiểu:
function timeTo12HrFormat(time)
{ // Take a time in 24 hour format and format it in 12 hour format
var time_part_array = time.split(":");
var ampm = 'AM';
if (time_part_array[0] >= 12) {
ampm = 'PM';
}
if (time_part_array[0] > 12) {
time_part_array[0] = time_part_array[0] - 12;
}
formatted_time = time_part_array[0] + ':' + time_part_array[1] + ':' + time_part_array[2] + ' ' + ampm;
return formatted_time;
}
var time = timeTo12HrFormat(18:00:00);
console.log(time); // 6:00:00 PM
Giả sử bạn sẽ nhận được chuỗi ngày theo định dạng thích hợp, tôi có giải pháp.
function parseDateTime(dt) {
var date = false;
if (dt) {
var c_date = new Date(dt);
var hrs = c_date.getHours();
var min = c_date.getMinutes();
if (isNaN(hrs) || isNaN(min) || c_date === "Invalid Date") {
return null;
}
var type = (hrs <= 12) ? " AM" : " PM";
date = ((+hrs % 12) || hrs) + ":" + min + type;
}
return date;
}
parseDateTime("2016-11-21 12:39:08");//"12:39 AM"
parseDateTime("2017-11-21 23:39:08");//"11:39 PM"
Dựa trên câu trả lời của gilly3.
Nếu bạn muốn chuyển đổi:
08:00 to 08:00 AM
16:00 to 04:00 PM
Sau đó, điều này sẽ làm việc:
function tConv24(time24) {
var ts = time24;
var H = +ts.substr(0, 2);
var h = (H % 12) || 12;
h = (h < 10)?("0"+h):h; // leading 0 at the left for 1 digit hours
var ampm = H < 12 ? " AM" : " PM";
ts = h + ts.substr(2, 3) + ampm;
return ts;
};
tôi thích tận dụng sức mạnh của tự nhiên javascript ngày đối tượng, thay vì làm phức tạp những thứ có biểu thức chính quy và xác thực. Ngoài ra, tôi nghĩ tốt nhất là thêm số 0 cho số giờ đơn. Tôi đã viết điều này format-12h component giải quyết vấn đề như tôi đã đề cập ở trên.
Bạn có thể xem mã và kết quả kiểm tra. Hãy nhập khẩu và sử dụng như minh họa trong các ví dụ sau:
format12h(new Date(2017,06,04,10,45,10)) => 10:45 am
format12h(new Date(2017,06,04,23,45,10)) => 11:45 pm
format12h(new Date(2017,06,04,23,45,10), true) => 11:45:10 pm
- 1. Chuyển đổi từ 12 giờ đến 24 giờ trong java
- 2. Làm cách nào để chuyển đổi thời gian 24 giờ thành 12 giờ?
- 3. Chuyển chuỗi thành ngày có múi giờ
- 4. php định dạng 12 giờ sang định dạng thời gian 24 giờ chuyển đổi
- 5. Làm cách nào để chuyển đổi thời gian đồng hồ 12 giờ thành giờ đồng hồ 24 giờ bằng PHP?
- 6. chuyển đổi bất kỳ chuỗi ngày nào thành dấu thời gian không có múi giờ
- 7. Làm thế nào để bạn chuyển đổi giữa thời gian 12 giờ và 24 giờ trong PHP?
- 8. Làm thế nào để chuyển đổi 24 giờ thời gian Chuỗi thành 12 hr định dạng thời gian Chuỗi
- 9. Cách chuyển đổi thời gian từ định dạng 24 giờ sang định dạng 12 giờ bằng javascript?
- 10. Chuyển đổi các ngày JSON không có múi giờ
- 11. PHP Ngày và giờ chuyển đổi chuỗi thành Ngày giờ MySQL
- 12. Chuyển đổi định dạng 12 giờ sang định dạng 24 giờ trong Ruby
- 13. Phát hiện xem định dạng thời gian có ở định dạng 12 giờ hoặc 24 giờ
- 14. Chuyển đổi thời gian và ngày tháng từ múi giờ này sang múi giờ khác trong PHP
- 15. SimpleDateFormat trả về ngày 24 giờ: cách nhận ngày 12 giờ?
- 16. Đặt NSDate thành ngày, giờ và múi giờ cụ thể
- 17. Ngày PostgreSQL() với múi giờ
- 18. MySQL chuyển đổi ngày giờ thành dấu thời gian Unix
- 19. Chuyển đổi ngày giờ thành chuỗi
- 20. Định dạng chuỗi ngày giờ mặc định với múi giờ
- 21. Python pytz Chuyển đổi dấu thời gian (định dạng chuỗi) từ một múi giờ sang một múi giờ khác
- 22. Cách chuyển đổi TimeSpan thành 24 giờ và phút chuỗi?
- 23. Chuyển đổi 24 lần Giờ đến 12 Giờ cộng AM/PM chỉ Oracle SQL
- 24. Cách chuyển đổi thời gian chính xác theo múi giờ?
- 25. Cách chuyển đổi ngày giờ từ múi giờ này sang múi giờ khác
- 26. Làm thế nào để bạn chuyển đổi ngày/giờ từ một múi giờ này sang múi giờ khác trong R?
- 27. Phát hiện xem iPhone có hiển thị thời gian ở chế độ 12 giờ hoặc 24 giờ không?
- 28. ngày Chuyển đổi và thời gian con số để time_t VÀ xác định múi giờ
- 29. Ngày giờ Mysql với múi giờ
- 30. Chuyển đổi ngày giờ sang một số múi giờ khác trong java
cảm ơn câu trả lời "không có gì được xây dựng" và cho chức năng sử dụng regex. – Tim
@HBP khi không có ngày chỉ có thời gian trong chuỗi cách duy nhất bạn có thể bí mật định dạng 24 giờ thành định dạng 12 giờ chỉ là mã của bạn làm việc cho tôi bó cảm ơn – skhurams
Nó sẽ không hoạt động đúng giờ như "8: 30,2: 30,1: 30 "vv –