Advertisement
Guest User

Untitled

a guest
Jan 5th, 2015
476
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.06 KB | None | 0 0
  1. ;This might / might not be bastardly taken off Hawkee. ;)
  2.  
  3. alias DateXpander {
  4. unset %dateoutput
  5.  
  6. if ($1 isalpha) {
  7. echo -a Error. Use the same format as in $chr(36) $+ duration's output or seconds for the "value".
  8. halt
  9. }
  10.  
  11. if ($1 isnum) {
  12. set %dx_value $duration($1)
  13. }
  14. else {
  15. set %dx_value $1
  16. }
  17.  
  18. set %dx_weeks $iif($gettok(%dx_value,1,119) isnum,$gettok(%dx_value,1,119),0)
  19. set %dx_days $iif($gettok($gettok(%dx_value,1,100),-1,32) isnum,$gettok($gettok(%dx_value,1,100),-1,32),0)
  20. set %dx_hours $iif($gettok($gettok(%dx_value,1,104),-1,32) isnum,$gettok($gettok(%dx_value,1,104),-1,32),0)
  21. set %dx_minutes $iif($gettok($gettok(%dx_value,1,109),-1,32) isnum,$gettok($gettok(%dx_value,1,109),-1,32),0)
  22. set %dx_seconds $iif(sec isin $gettok(%dx_value,$gettok(%dx_value,0,32),32),$gettok($gettok(%dx_value,$gettok(%dx_value,0,32),32),1,115),0)
  23. set %dx_totaldays $calc(%dx_weeks * 7 + %dx_days)
  24. set %dx_outputdays %dx_totaldays
  25.  
  26. if ($3 != $null) {
  27. set %dx_currentmonth $gettok($3,1,47)
  28. set %dx_currentyear $gettok($3,3,47)
  29. }
  30. elseif ($chr(47) isin $2) {
  31. set %dx_currentmonth $gettok($2,1,47)
  32. set %dx_currentyear $gettok($2,3,47)
  33. }
  34. else {
  35. set %dx_currentmonth $date(m)
  36. set %dx_currentyear $date(yyyy)
  37. }
  38. if ($len(%dx_currentmonth) == 1) { set %dx_currentmonth 0 $+ %dx_currentmonth }
  39. if ($len(%dx_currentyear) == 2) { set %dx_currentyear 20 $+ %dx_currentyear }
  40.  
  41. :monthstart
  42. if ($istok(12.10.07.05,%dx_currentmonth,46)) {
  43. set %dx_monthdays 30
  44. }
  45. elseif ($istok(11.09.08.06.04.02.01,%dx_currentmonth,46)) {
  46. set %dx_monthdays 31
  47. }
  48. elseif (%dx_currentmonth == 03 && ($calc(%dx_currentyear % 4) != 0 || ($calc(%dx_currentyear % 100) == 0 && $calc(%dx_currentyear % 400) != 0 && %dx_currentyear > 1582))) {
  49. set %dx_monthdays 28
  50. }
  51. elseif (%dx_currentmonth == 03) {
  52. set %dx_monthdays 29
  53. }
  54. if (%dx_totaldays >= %dx_monthdays) {
  55. inc %dx_months
  56. dec %dx_totaldays %dx_monthdays
  57. if (%dx_currentmonth != 01) {
  58. dec %dx_currentmonth
  59. if ($len(%dx_currentmonth) == 1) { set %dx_currentmonth 0 $+ %dx_currentmonth }
  60. dec %dx_currentyear
  61. }
  62. else { set %dx_currentmonth 12 }
  63. inc %dx_totalmonths
  64. inc %dx_monthsdays %dx_monthdays
  65. if (%dx_totalmonths == 12) {
  66. inc %dx_yeardays %dx_monthsdays
  67. unset %dc_monthsdays
  68. unset %dx_totalmonths
  69. }
  70. goto monthstart
  71. }
  72.  
  73. set %dx_years $int($calc(%dx_months / 12))
  74. dec %dx_months $calc(%dx_years * 12)
  75. set %dx_weeks $int($calc(%dx_totaldays / 7))
  76. set %dx_totaldays $calc(%dx_totaldays % 7)
  77.  
  78. if ($2 && $chr(47) !isin $2) {
  79. if (y !isin $2 && %dx_years > 0) {
  80. set %dx_months $calc(%dx_months + (%dx_years * 12))
  81. set %dx_years 0
  82. }
  83. if (m !isin $2 && %dx_months > 0) {
  84. set %dx_weeks $iif(%dx_years == 0,$int($calc((%dx_outputdays) / 7)),$int($calc((%dx_outputdays - %dx_yeardays) / 7)))
  85. set %dx_totaldays $iif(%dx_years == 0,$calc((%dx_outputdays) % 7),$calc((%dx_outputdays - %dx_yeardays) % 7))
  86. }
  87. if (w !isin $2 && %dx_weeks > 0) {
  88. set %dx_totaldays $calc(%dx_totaldays + (%dx_weeks * 7))
  89. }
  90. if (d !isin $2 && %dx_days > 0) {
  91. set %dx_hours $calc(%dx_hours + (%dx_days * 24))
  92. }
  93. if (h !isin $2 && %dx_hours > 0) {
  94. set %dx_minutes $calc(%dx_minutes + (%dx_hours * 60))
  95. }
  96. if (n !isin $2 && %dx_minutes > 0) {
  97. set %dx_seconds $calc(%dx_seconds + (%dx_minutes * 60))
  98. }
  99. set %dateoutput $replacex($2,y,$bytes(%dx_years,b) $iif(%dx_years == 1,year $+ $chr(44) $+ $chr(32),years $+ $chr(44) $+ $chr(32)),m,$bytes(%dx_months,b) $iif(%dx_months == 1,month $+ $chr(44) $+ $chr(32),months $+ $chr(44) $+ $chr(32)),w,$bytes(%dx_weeks,b) $iif(%dx_weeks == 1,week $+ $chr(44) $+ $chr(32),weeks $+ $chr(44) $+ $chr(32)),d,$bytes(%dx_totaldays,b) $iif(%dx_totaldays == 1,day $+ $chr(44) $+ $chr(32),days $+ $chr(44) $+ $chr(32)),h,$bytes(%dx_hours,b) $iif(%dx_hours == 1,hour $+ $chr(44) $+ $chr(32),hours $+ $chr(44) $+ $chr(32)),n,$bytes(%dx_minutes,b) $iif(%dx_minutes == 1,minute $+ $chr(44) $+ $chr(32),minutes $+ $chr(44) $+ $chr(32)),s,$bytes(%dx_seconds,b) $iif(%dx_seconds == 1,second $+ $chr(44) $+ $chr(32),seconds $+ $chr(44) $+ $chr(32)))
  100. set %dateoutput $left(%dateoutput,-1)
  101. }
  102. else {
  103. if (%dx_years > 1) { set %dateoutput %dateoutput $bytes(%dx_years,b) $+ _years }
  104. elseif (%dx_years == 1) { set %dateoutput %dateoutput $bytes(%dx_years,b) $+ _year }
  105. if (%dx_months > 1) { set %dateoutput %dateoutput %dx_months $+ _months }
  106. elseif (%dx_months == 1) { set %dateoutput %dateoutput %dx_months $+ _month }
  107. if (%dx_weeks > 1) { set %dateoutput %dateoutput %dx_weeks $+ _weeks }
  108. elseif (%dx_weeks == 1) { set %dateoutput %dateoutput %dx_weeks $+ _week }
  109. if (%dx_totaldays > 1) { set %dateoutput %dateoutput %dx_totaldays $+ _days }
  110. elseif (%dx_totaldays == 1) { set %dateoutput %dateoutput %dx_totaldays $+ _day }
  111. if (%dx_hours > 1) { set %dateoutput %dateoutput %dx_hours $+ _hours }
  112. elseif (%dx_hours == 1) { set %dateoutput %dateoutput %dx_hours $+ _hour }
  113. if (%dx_minutes > 1) { set %dateoutput %dateoutput %dx_minutes $+ _minutes }
  114. elseif (%dx_minutes == 1) { set %dateoutput %dateoutput %dx_minutes $+ _minute }
  115. if (%dx_seconds > 1) { set %dateoutput %dateoutput %dx_seconds $+ _seconds }
  116. elseif (%dx_seconds == 1) { set %dateoutput %dateoutput %dx_seconds $+ _second }
  117.  
  118. unset %dx_*
  119.  
  120. set %dateoutput $replace(%dateoutput,$chr(32),$chr(44) $+ $chr(32),_,$chr(32))
  121. }
  122. if ($gettok(%dateoutput,0,32) > 2) {
  123. set %dateoutput $instok(%dateoutput,$chr(32) $+ and,-2,32)
  124. }
  125. unset %dx_*
  126.  
  127. return %dateoutput
  128. }
  129.  
  130. ;the actual stuff (oh my this code looks horrible now i look back at it)
  131. on *:TEXT:!2*:#:{
  132. if ($right($1,-1) !isnum) { HALT }
  133. if ($right($1,-1) <= 2015) { HALT }
  134. set %timest 1420070400
  135. set %amount $right($1,-1) - 2015
  136. set %incre %amount * 31536000
  137. inc %timest %incre
  138. set %timeuntil %timest - $gmt
  139. msg $chan Time until4 $right($1,-1) $+ : $datexpander(%timeuntil)
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement