Tôi mới đến cành lá và tôi đang tìm cách để biến một định dạng datetime
thành một thời gian trước đây như 2 giờ trước hoặc 3 days ago. Có một plugin jquery (jquery-timeago) mà tôi đã sử dụng ở phía khách hàng nhưng nó sẽ là tuyệt vời nếu tôi có thể làm điều này với cành. Nếu cành cây không đi kèm với định dạng bộ lọc này thì có những phần mở rộng mà tôi có thể sử dụng không?Twig - thời gian trước đây định dạng
Trả lời
Tôi phát hiện ra mình có thể tạo bộ lọc tùy chỉnh với cành hình Twig_SimpleFilter
.
$filter = new Twig_SimpleFilter('timeago', function ($datetime) {
$time = time() - strtotime($datetime);
$units = array (
31536000 => 'year',
2592000 => 'month',
604800 => 'week',
86400 => 'day',
3600 => 'hour',
60 => 'minute',
1 => 'second'
);
foreach ($units as $unit => $val) {
if ($time < $unit) continue;
$numberOfUnits = floor($time/$unit);
return ($val == 'second')? 'a few seconds ago' :
(($numberOfUnits>1) ? $numberOfUnits : 'a')
.' '.$val.(($numberOfUnits>1) ? 's' : '').' ago';
}
});
Sau đó, tôi thêm nó vào môi trường Twig tôi:
$twig = $app->view()->getEnvironment();//because I'm using Twig in Slim framework
$twig->addFilter($filter);
Sử dụng nó mẫu của tôi như thế này:
{{2014-10-11 12:54:37|timeago}}
Nếu bạn đang sử dụng cành bên trong Symfony, hãy kiểm tra KnpTimeBundle . Bao gồm hỗ trợ "trước" bằng nhiều ngôn ngữ.
Cảm ơn tôi sẽ giữ điều này trong tâm trí, nhưng ngay bây giờ tôi sẽ cho Slim về dự án nhỏ này. –
mở rộng ngày cành hiện chính xác những gì bạn hỏi:
{{ post.published_at|time_diff }}
Ví dụ trên sẽ ra một chuỗi như 4 giây hoặc trong 1 tháng, tùy thuộc vào ngày lọc.
Xem http://twig.sensiolabs.org/doc/extensions/date.html (không còn hoạt động)
Làm việc liên kết http://twig-extensions.readthedocs.io/en/latest/date.html
Thật không may là bộ lọc cung cấp cho undefined (hoặc null?) Nếu sự khác biệt là 0 giây. Vì vậy, bạn phải sử dụng '{{post.published_at | time_diff? : 'just now'}} '. Tôi khuyên bạn nên viết một bộ lọc tùy chỉnh như đề xuất ở trên. – Travis
Liên kết đó không hoạt động. Tính năng này đã bị xóa khỏi cành chưa? Có cách nào để làm điều đó ngay bây giờ không? – Bryce
Tôi đã thêm liên kết hoạt động – 10us
- 1. định dạng thời gian fullcalendar
- 2. Định dạng thời gian NLog
- 3. Làm cách nào để định dạng chỉ thị 'thời điểm góc' của 'thời gian trước'?
- 4. định dạng dấu thời gian sqlite
- 5. Định dạng số điện thoại bằng Twig
- 6. Định dạng thời gian trên Android
- 7. Định dạng thời gian EventLogQuery dự kiến?
- 8. Định dạng dấu thời gian Logrus
- 9. Định dạng thời gian UNIX UNIX
- 10. C# - Định dạng thời gian hiện tại
- 11. Định dạng Dấu thời gian của Sọc
- 12. xem định dạng thời gian python
- 13. Định dạng Dấu thời gian trong Java
- 14. Định dạng thời gian ở Elixir
- 15. Twig - Cách lặp số thời gian cụ thể
- 16. Android: Thay đổi định dạng thời gian theo định dạng thời gian hiện tại của Thiết bị
- 17. Định dạng dấu thời gian Unix với ctime trong c
- 18. Chuyển đổi định dạng thời gian thành số bằng R
- 19. Chuyển đổi thời gian Epoch sang định dạng ngày tháng và thời gian trong Java
- 20. PHP Kiểm tra xem thời gian hiện tại có trước thời gian quy định không
- 21. Android 4.3 jelly Bean Định dạng thời gian phát hành
- 22. Vẽ theo phút như thời gian đã định dạng (min.sec)
- 23. Trung tâm trò chơi Định dạng thời gian
- 24. Định dạng thời gian được sử dụng trong tệp .ics?
- 25. Regex cho định dạng thời gian AM PM cho jquery
- 26. Định dạng thời gian trong ABAP, xóa giây
- 27. ElasticSearch không ánh xạ định dạng thời gian JODA
- 28. pandas.to_datetime định dạng chuỗi thời gian không nhất quán
- 29. Angularjs: dấu thời gian định dạng thời gian UTC với trình trợ giúp ngày
- 30. dấu thời gian từ 3 tháng trước
Tôi biết đó là một khoảng thời gian kể từ khi bạn đăng nó, nhưng có một cách để thêm bản dịch để giải pháp của bạn? Tôi đã có thể tiêm một đối tượng Translator trong dịch vụ, nhưng Symfony không nhận ra "bản dịch-id". – wawa