Trong PHP, bạn có thể dễ dàng chuyển đổi mô tả ngày giờ bằng văn bản bằng tiếng Anh thành ngày tháng thích hợp với strtotime()
.
Có điều gì tương tự trong Javascript không?
Câu trả lời:
Tôi đã tìm thấy bài viết này và thử hướng dẫn. Về cơ bản, bạn có thể sử dụng hàm tạo ngày để phân tích cú pháp ngày, sau đó viết lấy giây từ getTime()
phương thức
var d=new Date("October 13, 1975 11:13:00");
document.write(d.getTime() + " milliseconds since 1970/01/01");
Điều này có hiệu quả không?
strtotime()
hỗ trợ nhiều định dạng khác.
Vâng, đúng vậy. Và nó được hỗ trợ trong tất cả các trình duyệt chính:
var ts = Date.parse("date string");
Sự khác biệt duy nhất là hàm này trả về mili giây thay vì giây, vì vậy bạn cần chia kết quả cho 1000.
Kiểm tra các định dạng hợp lệ JavaScript có thể phân tích cú pháp.
strtotime("now"); strtotime("10 September 2000"); strtotime("+1 day"); strtotime("+1 week"); strtotime("+1 week 2 days 4 hours 2 seconds"); strtotime("next Thursday"); strtotime("last Monday");
Kiểm tra cách triển khai strtotime () của PHP trong JavaScript này!
Tôi thấy rằng nó hoạt động giống hệt với PHP cho mọi thứ mà tôi đã ném vào nó.
Cập nhật: chức năng này theo phiên bản 1.0.2 không thể xử lý trường hợp này:
'2007:07:20 20:52:45'
(Lưu ý:
dấu phân cách cho năm và tháng)
Điều này hiện có sẵn dưới dạng một npm
mô-đun ! Đơn giản npm install locutus
và sau đó trong nguồn của bạn:
var strtotime = require('locutus/php/datetime/strtotime');
Tôi ghen tị với strtotime () trong php, nhưng tôi sử dụng moment của tôi trong javascript. Không ngọt ngào như từ php, nhưng thủ thuật cũng gọn gàng.
// first day of the month
var firstDayThisMonth = moment(firstDayThisMonth).startOf('month').toDate();
Quay trở lại và sử dụng dấu subtract()
và add()
với endOf()
và startOf()
:
// last day of previous month
var yesterMonthLastDay = moment(yesterMonthLastDay).subtract(1,'months').endOf('month').toDate();
Hỗ trợ của trình duyệt để phân tích cú pháp chuỗi không nhất quán . Vì không có thông số kỹ thuật về định dạng nào nên được hỗ trợ, những gì hoạt động trong một số trình duyệt sẽ không hoạt động trong các trình duyệt khác.
Hãy thử Moment.js - nó cung cấp chức năng trình duyệt chéo để phân tích cú pháp ngày :
var timestamp = moment("2013-02-08 09:30:26.123");
console.log(timestamp.milliseconds()); // return timestamp in milliseconds
console.log(timestamp.second()); // return timestamp in seconds
Có một số mô-đun cung cấp hành vi tương tự, nhưng không hoàn toàn giống như strtotime của PHP. Trong số một số lựa chọn thay thế, tôi thấy việc sử dụng ngày mang lại kết quả tốt nhất.
var strdate = new Date('Tue Feb 07 2017 12:51:48 GMT+0200 (Türkiye Standart Saati)');
var date = moment(strdate).format('DD.MM.YYYY');
$("#result").text(date); //07.02.2017
<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.js"></script>
<div id="result"></div>
Date()
- sooo… giống như new Date(strdate)
thực sự…
Có thể bạn có thể khai thác một hàm mẫu như:
function strtotime(date, addTime){
let generatedTime=date.getTime();
if(addTime.seconds) generatedTime+=1000*addTime.seconds; //check for additional seconds
if(addTime.minutes) generatedTime+=1000*60*addTime.minutes;//check for additional minutes
if(addTime.hours) generatedTime+=1000*60*60*addTime.hours;//check for additional hours
return new Date(generatedTime);
}
let futureDate = strtotime(new Date(), {
hours: 1, //Adding one hour
minutes: 45 //Adding fourty five minutes
});
document.body.innerHTML = futureDate;
`