2013-07-29 19 views
57

Tôi nhận được dữ liệu từ một cơ sở dữ liệu và hiển thị nó:AngularJS. Chuyển đổi giá trị thẻ (Unix bất cứ lúc nào con người có thể đọc được)

<ul> 
     <li ng-repeat="item in items> 
      <mydate>{{item.date}}</mydate> 
     </li> 
    </ul> 

đâu {{item.date}} là một ngày Unix như 1374843600. Làm thế nào tôi có thể thiết lập định dạng ngày tháng sử dụng AngularJS chỉ thị? Có thể không?

Khi tôi cố gắng làm điều đó, tôi đã nhận được một giá trị của thẻ mydate - {{item.date}}

+0

bạn có thể thay đổi câu trả lời của bạn? Câu trả lời cho trước hiển thị sai thời gian theo hệ số 1000. Xem câu trả lời của Sergei Basharov. –

Trả lời

72

Sử dụng định dạng date filter như thế này: t

Reference

+2

không cung cấp ngày mong muốn. –

+0

đã kiểm tra câu trả lời của bạn với giải pháp này –

+1

** KHÔNG. ** Câu hỏi yêu cầu cụ thể cho dấu thời gian unix không phải là mili giây - đó là SECONDS. Bạn phải nhân dấu thời gian unix bởi '1000' như sau:' {{item.date * 1000 | ngày: 'yyyy-MM-dd HH: mm: ss Z'}} ' –

3

Bạn nên sử dụng bộ lọc ngày đó đã được cung cấp bởi góc: here

211

tôi đã phải đối mặt ông phát hành với thời gian unix được định dạng dưới dạng một số giây từ khởi động kỷ nguyên hoặc dưới dạng một số mili giây được sử dụng trong JavaScript. Nói Vì vậy, Nghiêm, AngularJS không chuyển đổi Unix timestamp to Date, nhưng một số với mili giây, mà là lớn hơn 1000 lần, vì vậy trước hết bạn sẽ phải nhân số đầu vào của bạn bằng 1000, như thế này:

Nếu không ngày của bạn sẽ sai.

+6

Cảm ơn bài đăng của bạn.Tôi đã đấu tranh với điều này quá, và không có ý tưởng góc/javascript đếm mili giây và không giây. Thời gian unix là phổ quát và là SECONDS sau vụ nổ lớn ... – stormpat

+5

Đây phải là câu trả lời đúng. Cảm ơn @sergey. – tobe

+0

Tôi có thể đã dành hàng giờ mà không cần đến câu trả lời của bạn. Cảm ơn! – MarcoS

3
yourapp.filter('timestampToDate', function() { 
    return function (timestamp) { 
     var date = new Date(timestamp * 1000); 
     var dateObject = date.getFullYear() +'/'+ ('0' + (date.getMonth() + 1)).slice(-2) +'/'+ ('0' + date.getDate()).slice(-2); 
     return dateObject; 
    }; 
}); 

Cách sử dụng:
{{timestamp | timestampToDate}}

5

Nếu bạn có một dấu thời gian Unix, có thể bạn sẽ phải nhân timestamp của bạn 1000 kể từ khi timestamp Unix là trong vài giây và ngày AngularJs lọc cần mili giây.

vm.milliseconds = Date('1441981121' * 1000); 

sau đó sử dụng $ filter() chức năng

var date = $filter('date')(vm.milliseconds, 'd MMMM yyyy'); 

hoặc bạn có thể sử dụng trong ng-bind

<span ng-bind="myController.milliseconds | date : 'd MMMM yyyy'"></span> 
1

Có chỉ thị để mà gọi rsTime.

<rs-time start-time="1478513323" digital-format="'ddd MMM d h:mm TT'"></rs-time> 

Kiểm tra bản trình diễn tại Plunker.

Dưới đây là tính định dạng thời gian khác nhau:

M/d/y - 11/7/2016 

HH:mm:ss - 16:02:31 (24hrs formate) 

hh:mm:ss TT - 04:03:10 PM 

ddd MMM d h:mm TT - Mon Nov 7 at 4:04 PM 

Đối với lần tài liệu Github

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