Chuyển đổi thời gian thành số JavaScript

Tại sao lại là JavaScript? . Ngay cả các đối thủ cạnh tranh hiện đại như Typescript cũng phải được biên dịch thành Javascript để chạy trên hầu hết các trình duyệt

1 Tại sao lại là PerlScript? . TLDR, đó là một ý tưởng tồi. Vẫn còn tò mò?

Nói một cách đại khái, kỷ nguyên là thời gian tính bằng giây đã trôi qua kể từ khi máy tính bắt đầu đếm. Đối với mục đích của chúng tôi, chúng tôi sẽ gọi đó là 0 giờ, 0 phút, 0 giây bắt đầu từ ngày 1 tháng 1 năm 1970. Nếu muốn biết thêm thông tin, tôi chuyển sang bài viết này về định nghĩa kỷ nguyên

Epoch rất hữu ích trong lập trình máy tính vì chúng ta có thể sử dụng nó để so sánh các ngày theo toán học giúp chúng ta viết logic lập trình với nó bằng cách chuyển đổi định dạng ngày mà con người có thể đọc được thành tương đương trong epoch

Tôi đã có nhiều câu hỏi về cách thực hiện chuyển đổi. Thật đáng để xem mã nguồn ở đây để hiểu. nếu chỉ để tìm cách không làm điều đó. ;-) Nhưng, vì chủ đề này không liên quan cụ thể đến lập trình, nên tôi sẽ cố gắng giải thích mã này làm gì bằng tiếng Anh (hoặc gần như tôi có thể quản lý, xin lỗi giáo viên của tôi trước)

Trước hết, cách dễ nhất để lấy thời gian hiện tại trong kỷ nguyên (sử dụng JavaScript), là gọi phương thức getTime() của đối tượng JavaScript Date và chia giá trị trả về cho 1000. getTime trả về số mili giây đã trôi qua, theo múi giờ trên máy tính của bạn, kể từ 1/1/1970 GMT. Vì epoch được đo bằng giây, nên bạn muốn chia giá trị trả về cho 1000 để đổi mili giây thành giây. Hãy nhớ rằng đối tượng Ngày trong JavaScript sẽ nhận được thời gian từ đồng hồ trên máy tính của bạn. Đây là một ví dụ thực sự đơn giản làm điều này

Ghi chú. Chúng tôi đang trừ mili giây để có được một số nguyên thay vì một phân số. Trên thực tế, bạn có thể sử dụng parseInt tương tự, đây là một ví dụ nhỏ khác thể hiện sự khác biệt giữa (a) getTime()/1000 -- đôi khi một phân số được trả về, (b) phương thức ở trên, (getTime - mili giây)/1000, . Các công cụ đều tốt và tốt, nhưng tôi thích đau, làm thế nào để bạn làm điều này bằng tay?

Hừm được rồi. nếu bạn có một ngày/giờ thân thiện với con người mà bạn muốn chuyển đổi nhưng bạn lại như vậy, chúng tôi sẽ nói là "không thích công cụ" (hoặc bạn chỉ thích thể dục dụng cụ trí óc--tốt cho bạn, btw), tôi sẽ thử giải thích

Hãy nhớ rằng một mô tả chính xác về những gì các phương thức Đối tượng ngày JavaScript đang làm không nằm trong phạm vi--thay vào đó, nỗ lực giải thích của tôi sẽ mang tính khái niệm

Bạn có thể làm một phép tính sơ bộ như sau

Đối với những cú đá và tiếng cười khúc khích, hãy lấy ví dụ của chúng ta về một ngày mà nhiều người sẽ nhận ra, ngày 15 tháng 4,. Và, chúng tôi sẽ nói đó là 08. 30 giờ sáng chỉ để thêm chút gia vị cho nỗ lực này

năm

Bắt đầu với năm. . Trừ năm 1970 khỏi năm. - Năm 1970 để lại cho chúng ta nhiều năm. ()

Chuyển đổi năm thành ngày. Vì vậy, năm nhân với 365 ngày trong mỗi năm đó. Điều này cho chúng ta ngày

Bây giờ là vấn đề tương đối khó khăn đầu tiên - xử lý các năm nhuận. Giống như tôi, bạn có thể đã được giải thích rằng cứ bốn năm một lần có thể là một năm nhuận. với một số lưu ý. Trên thực tế, (với tư cách là một cá nhân hữu ích đã chỉ ra cho tôi) quy tắc thực sự như sau. Những năm chia hết cho 100 không phải là năm nhuận, trừ khi chúng cũng chia hết cho 400, trong trường hợp đó chúng là năm nhuận, nâng tổng số ngày trong năm đó lên 366

Chúng ta cần kiểm tra từng năm giữa mục tiêu của chúng ta và điểm xuất phát năm 1970. (Đây là một lý do tại sao một công cụ rất tuyệt vời. Bạn không cần phải nỗ lực hết sức. ) Viết nhanh tập lệnh xác định phép tính

Muốn xem một năm cụ thể có phải là năm nhuận không? . )

Vì vậy, chúng ta cần thêm

tháng trong ngày

Bây giờ chúng ta cần tính các tháng trong năm hiện tại và chuyển đổi thành ngày. Trong ví dụ của chúng tôi, chúng tôi đang sử dụng ngày 15 tháng 4, vì vậy chúng tôi có 15 ngày cho tháng hiện tại. Tháng Giêng có 31 ngày, tháng Hai có 28 - trừ khi năm nay là năm nhuận, trong trường hợp đó nó có 29. Nếu đây là một năm nhuận, chúng tôi đã phát hiện ra nó trong lần kiểm tra năm nhuận ở trên. Tháng 3 có 31 ngày. Cộng chúng lại ta được 15 + 31 + 28 + 31 = 105 ngày. Thêm số đó trở lại vào tổng số ngày đang chạy của chúng tôi, chúng tôi nhận được

Bây giờ chúng ta đã có tất cả các ngày, hãy chuyển đổi chúng thành giây. Hóa ra mỗi ngày có khoảng 86.400 giây. (Xem biểu đồ bên dưới để biết thêm các chuyển đổi hữu ích. ) Vì vậy, chúng tôi lấy và nhân nó với 86400 để có được số giây đã trôi qua cho đến đầu ngày 15 tháng 4

Giờ, Phút,. giây?

Bây giờ chúng ta cần tính đến số giờ và phút đã trôi qua trong ngày giả định hiện tại. Bây giờ là 08. 30. Mỗi phút có 60 giây, mỗi giờ có 60 phút, vậy ta quy đổi giờ 8 giờ là 8 * 60 * 60. Điều này mang lại cho chúng tôi. Hơn nữa, chúng tôi sẽ chuyển đổi 30 phút kể từ giờ 8 giờ thành giây, 30 * 60 mang lại cho chúng tôi. Và chúng tôi thêm tất cả những thứ đó vào giây cho đến nay để có được

Thêm một chút điên rồ

Cuối cùng, chúng ta cần tính toán phần bù của mình từ GMT. Hừm. và sau đó là yếu tố tiết kiệm ánh sáng ban ngày (*thở dài thêm*). Trong trường hợp của tôi, PST, chúng tôi khác nhau 8 giờ--và chúng tôi tham gia tiết kiệm ánh sáng ban ngày. Vì vậy, tôi thêm (8 * 60 * 60) + (1 * 60 * 60) để có được , quay lại số giây đang chạy của tôi để lấy giờ địa phương

Đây sẽ là thời đại mà chúng ta đang tìm kiếm. (Xem sự tỉnh táo kiểm tra kết quả của bạn bên dưới. ) Vì vậy, chúng tôi đang nói giây đã trôi qua kể từ 1/1/1970--"0" trong thời gian máy tính. Nó không thân thiện lắm với mắt người, nhưng sau đó nó dành cho máy tính;

Sanity kiểm tra kết quả của bạn

Cắm lại vào bộ chuyển đổi và xem bạn còn cách ngày mục tiêu của chúng tôi bao xa. Có khả năng là bạn bị lệch một số tiền, có thể là phần bù cho múi giờ địa phương của chính bạn. Nói chung, bạn nên luôn tỉnh táo kiểm tra kết quả của mình. Hai bài kiểm tra tốt là kiểm tra kết quả của bạn so với ngày hôm nay (ví dụ: sử dụng kỷ nguyên hiện tại từ getTime/1000) và thời gian "0". Nếu cơ chế của bạn vượt qua cả hai bài kiểm tra, đó là một dấu hiệu tốt

Một lưu ý thú vị khác. Tôi đã nghe mọi người đề xuất sử dụng UTC thay vì giờ địa phương. UTC chắc chắn là một cách tiếp cận "toàn cầu" phù hợp với các ứng dụng dựa trên thời gian, đặc biệt khi đối tượng của bạn trải rộng trên toàn cầu; . Để áp dụng nó cho ngôn ngữ cụ thể của bạn, bạn sẽ tính toán độ lệch múi giờ mục tiêu từ UTC. Có một số vấn đề kỳ lạ xuất hiện. Tính toán một phần bù chính xác có thể thực sự khó khăn trong thế giới thực. Ví dụ: thời gian Arizona chính xác trong Windows, không chính xác trong JavaScript. Và đó chỉ là một ví dụ. Tôi không phải là chuyên gia về múi giờ, vì vậy tôi không biết các vấn đề về bù múi giờ phổ biến như thế nào. Tôi đánh giá cao phản hồi từ bất cứ ai biết

Tất nhiên, câu hỏi phù hợp nhất trong tất cả những điều này là "tại sao tôi lại muốn làm bất kỳ điều gì trong số này?" . Một ví dụ đáng chú ý đã xảy ra khi làm việc cho một công ty lưu trữ web là chúng tôi muốn bật/tắt khối tin nhắn 3 ngày sau khi đăng ký dịch vụ mới. Chúng tôi có một người quản lý tiếp thị muốn phát một số thông điệp tới khán giả của chúng tôi là các quản trị viên web sau ba ngày trải nghiệm của họ. Bởi vì có một lượng khách hàng ổn định, nên bài tập này là một bài tập liên tục và liên quan đến từng tài khoản cụ thể. Chúng tôi cần một cách để xác định thành viên của đối tượng hơn 3 ngày và sau đó là một số logic để kích hoạt thông điệp. Để biến nhu cầu đó thành thói quen lập trình, chúng tôi đã thực hiện các bước sau

Làm cách nào để chuyển đổi dữ liệu thành số trong JavaScript?

Cách chuyển đổi một chuỗi thành một số trong JavaScript sử dụng toán tử cộng một ngôi ( + ) Toán tử cộng một ngôi ( + ) sẽ chuyển đổi . Toán tử sẽ đi trước toán hạng. Chúng ta cũng có thể sử dụng toán tử cộng một ngôi ( + ) để chuyển đổi một chuỗi thành một số dấu phẩy động.

Làm cách nào để chuyển đổi AM PM thành 24 giờ trong JavaScript?

var timeend = giờ + ". " + phút + ". 00"; bảng điều khiển. log(thời gian kết thúc); . i. đ . Nếu chúng ta nhìn vào đoạn mã trên, nó sẽ thay đổi định dạng sáng/chiều thành 24 giờ.

Làm cách nào để chuyển đổi phút thành hh mm ss trong JavaScript?

Để chuyển đổi phút thành giờ và phút trong JavaScript, chia số phút cho 60 . Giờ sẽ là số nguyên của kết quả và phút sẽ là phần còn lại của phép chia. bảng điều khiển. log(toHoursAndMinutes(130));

Làm cách nào để chuyển đổi giá trị thời gian thành chuỗi trong JavaScript?

Phương thức toTimeString() trả về phần thời gian của đối tượng ngày tháng dưới dạng chuỗi.