đặt ngày trong loại đầu vào ngày


104
<input id="datePicker" type="date" />​

tôi sẽ đặt ngày hôm nay trong loại ngày nhập datepicker trong chrome.

$(document).ready( function() {
    var now = new Date();
    var today = now.getDate()  + '/' + (now.getMonth() + 1) + '/' + now.getFullYear();
    alert(today);
    $('#datePicker').val(today);
});​

nhưng nó không hoạt động

Chỉnh sửa jsFiddle này - Vui lòng thử trong chrome.


2
Nếu bạn chọn một ngày trên fiddle của bạn và kiểm tra khung kết quả, làm một $('#datePicker').val();cho "2012-09-10"và đó không phải là định dạng mà bạn sử dụng để thiết lập ngày

Cuối cùng của tôi, nó hoạt động trong chrome .. Ý bạn chính xác là its not workinggì?
AdityaParab

thử: { currentText: "Now" }, xem tay
diEcho

làm việc trên tôi ... vấn đề là gì?
Netorica

1
@JigarPandya fr_FR (@ user108, ​​xem thêm stackoverflow.com/a/3496622/180100 )

Câu trả lời:


158

Liên kết Fiddle: http://jsfiddle.net/7LXPq/93/

Hai vấn đề trong này:

  1. Kiểm soát ngày trong HTML 5 chấp nhận ở định dạng Năm - tháng - ngày như chúng ta sử dụng trong SQL
  2. Nếu tháng là 9, nó cần được đặt là 09 chứ không phải 9 đơn giản. Vì vậy, nó cũng áp dụng cho trường ngày.

Vui lòng theo liên kết fiddle để xem demo:

var now = new Date();

var day = ("0" + now.getDate()).slice(-2);
var month = ("0" + (now.getMonth() + 1)).slice(-2);

var today = now.getFullYear()+"-"+(month)+"-"+(day) ;

$('#datePicker').val(today);

4
Câu trả lời sau năm 2012: kiểm tra câu trả lời của tôi để biết giải pháp được hỗ trợ trong một dòng mã.
Oliv Utilo

@ OlivUtilo — chắc chắn, nhưng câu trả lời của bạn đôi khi sẽ đưa ra kết quả không chính xác.
RobG

Bạn đã tiết kiệm thời gian của tôi, cảm ơn rất nhiều
Dip Surani

128

document.getElementById("datePicker").valueAsDate = new Date()

nên làm việc.


6
Đây là giải pháp tốt nhất mà tôi đã tìm thấy cho đến nay - hoạt động trên Android 4.0.3
Bến Clayton

6
Chắc chắn có vẻ sạch hơn so với câu trả lời được chấp nhận ... thanks
Skipjack

1
Tôi đã tìm thấy rằng điều này không làm việc trong Safari đối với một số lý do :(
james_alvarez

Đã thử nghiệm trong Chrome và Edge và thấy hoạt động tốt. Như @Skipjack đã nói, là Câu trả lời tuyệt vời!
Arun

Có vẻ như giải pháp chính xác, tuy nhiên trong Safari (13.1.2), cuộc gọi khiến bạn có một Ngoại lệ Trạng thái Không hợp lệ. Không chắc chắn lý do tại sao...?
fbitterlich

23

Cập nhật: Tôi đang làm điều này với date.toISOString().substr(0, 10). Cho kết quả giống như câu trả lời được chấp nhận và có sự hỗ trợ tốt.


2
Công trình trong safari
james_alvarez

4
Lưu ý: điều này cho biết một ngày trong múi giờ UTC. Ngược lại, câu trả lời hàng đầu sử dụng giờ địa phương.
Qwertie

@Qwertie - cả hai đều hoạt động trên cùng một Dateđối tượng (được tạo bằng Date hoặc Date.now mới, kế thừa múi giờ từ trình duyệt). sử dụng toISOString hoặc các hàm getDate (Tôi nghĩ) sẽ giải quyết như nhau; vì vậy tôi nghĩ rằng điều này sẽ có hành vi mong muốn ...
Oliv Utilo

1
@ OlivUtilo — Không, chúng không áp dụng cho khoảng thời gian của múi giờ bù cho máy chủ.
RobG

Như Qwertie nói, điều này có khả năng đưa ra câu trả lời sai nếu bạn đang sử dụng ngày mà không có thời gian. ví dụ: Thứ Bảy, ngày 01 tháng 9 năm 2018 00:00:00 GMT + 0100 được chuyển đổi thành "2018-08-31"
havlock

14
var today = new Date().toISOString().split('T')[0];
$("#datePicker").val(today);

Đoạn mã trên sẽ hoạt động.


12

đối với tôi cách ngắn nhất để giải quyết vấn đề này là sử dụng moment.js và giải quyết vấn đề này chỉ trong 2 dòng.

var today = moment().format('YYYY-MM-DD');
$('#datePicker').val(today);

1
yeah giống như $ ('# datePicker'). val (moment (). format ('YYYY-MM-DD'));
Umair Khalid

2
Đối với những người không quen với Moment, nếu bạn muốn định dạng một javascript ngày đối tượng tùy ý với khoảnh khắc (): var yourFormattedDate= moment(yourDate).format('YYYY-MM-DD'); $('#datePicker').val(yourFormattedDate);
veuncent


1

Tôi thường tạo hai hàm trợ giúp này khi sử dụng đầu vào ngày tháng:

// date is expected to be a date object (e.g., new Date())
const dateToInput = date =>
  `${date.getFullYear()
  }-${('0' + (date.getMonth() + 1)).slice(-2)
  }-${('0' + date.getDate()).slice(-2)
  }`;

// str is expected in yyyy-mm-dd format (e.g., "2017-03-14")
const inputToDate = str => new Date(str.split('-'));

Sau đó, bạn có thể đặt giá trị nhập ngày là:

$('#datePicker').val(dateToInput(new Date()));

Và lấy giá trị đã chọn như vậy

const dateVal = inputToDate($('#datePicker').val())

0

Datetimepicker luôn cần định dạng đầu vào YYYY-MM-DD, nó không quan tâm đến định dạng hiển thị của mô hình của bạn hoặc về ngày giờ hệ thống cục bộ của bạn. Nhưng định dạng đầu ra của bộ chọn ngày giờ là định dạng bạn muốn (hệ thống cục bộ của bạn). Có một ví dụ đơn giản trong bài đăng của tôi .


-5

Phiên bản jquery

var currentdate = new Date();

$('#DatePickerInputID').val($.datepicker.formatDate('dd-M-y', currentdate));

4
$.datepickerkhông phải là jQuery mặc định. Bạn đang sử dụng một plugin và không nói cái nào, câu trả lời này là vô ích.
Emile Bergeron
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.