utilnow.pipe.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import { Pipe, PipeTransform } from '@angular/core';
  2. @Pipe({
  3. name: 'utilnow',
  4. standalone: true
  5. })
  6. export class UtilnowPipe implements PipeTransform {
  7. transform(value: Date, args?: any): any {
  8. let now = new Date();
  9. let time = now.getTime() - value.getTime();
  10. let seconds = time / 1000
  11. if(seconds<=60){
  12. return this.handleArgs(seconds.toFixed(0),"秒钟前",args)
  13. }
  14. let minutes = seconds / 60
  15. if(minutes < 60){
  16. return this.handleArgs(minutes.toFixed(0),"分钟前",args)
  17. }
  18. let hours = minutes / 60
  19. if(hours < 24){
  20. return this.handleArgs(hours.toFixed(0),"小时前",args)
  21. }
  22. let days = hours / 24
  23. if(days < 7){
  24. return this.handleArgs(days.toFixed(0),"天前",args)
  25. }
  26. let dateStr = `${value?.getFullYear()}-${value?.getMonth()+1}-${value?.getDate()}`
  27. return dateStr
  28. }
  29. // 时间标记
  30. enLocale:any = {
  31. "秒钟前":" seconds ago",
  32. "分钟前":" minutes ago",
  33. "小时前":" hours ago",
  34. "天前":" days ago",
  35. }
  36. handleArgs(value:any,unit:any,args:any):any{
  37. if(args=="en"){
  38. unit = this.enLocale[unit]
  39. }
  40. if(args?.constructor?.name == "TranslateService"){
  41. console.log(unit)
  42. if(args?.getDefaultLang()=="en"){
  43. unit = this.enLocale[unit]
  44. }
  45. // unit = await new Promise(resolve=>{
  46. // args?.get(unit).subscribe(data=>{
  47. // console.log(data)
  48. // resolve(data)
  49. // })
  50. // })
  51. }
  52. if(args=="json"){
  53. return {unit,value}
  54. }else{
  55. return value+unit
  56. }
  57. }
  58. }