| 235 | | function doRelativeDate($in_seconds) { |
|---|
| 236 | | /** |
|---|
| 237 | | This function returns either a relative date or a formatted date depending |
|---|
| 238 | | on the difference between the current datetime and the datetime passed. |
|---|
| 239 | | $posted_date should be in the following format: YYYYMMDDHHMMSS |
|---|
| 240 | | |
|---|
| 241 | | Relative dates look something like this: |
|---|
| 242 | | 3 weeks, 4 days ago |
|---|
| 243 | | |
|---|
| 244 | | The function includes 'ago' or 'on' and assumes you'll properly add a word |
|---|
| 245 | | like 'Posted ' before the function output. |
|---|
| 246 | | **/ |
|---|
| 247 | | |
|---|
| 248 | | $diff = time()-$in_seconds; |
|---|
| 249 | | $months = floor($diff/2592000); |
|---|
| 250 | | $diff -= $months*2419200; |
|---|
| 251 | | $weeks = floor($diff/604800); |
|---|
| 252 | | $diff -= $weeks*604800; |
|---|
| 253 | | $days = floor($diff/86400); |
|---|
| 254 | | $diff -= $days*86400; |
|---|
| 255 | | $hours = floor($diff/3600); |
|---|
| 256 | | $diff -= $hours*3600; |
|---|
| 257 | | $minutes = floor($diff/60); |
|---|
| 258 | | $diff -= $minutes*60; |
|---|
| 259 | | $seconds = $diff; |
|---|
| 260 | | |
|---|
| 261 | | $relative_date = ''; |
|---|
| 262 | | |
|---|
| 263 | | if ($months>0) { |
|---|
| 264 | | // over a month old, just show date (mm/dd/yyyy format) |
|---|
| 265 | | return 'on '.date('r',$in_seconds); |
|---|
| 266 | | } else { |
|---|
| 267 | | if ($weeks>0) { |
|---|
| 268 | | // weeks and days |
|---|
| 269 | | $relative_date .= ($relative_date?', ':'').$weeks.' week'.($weeks>1?'s':''); |
|---|
| 270 | | $relative_date .= $days>0?($relative_date?', ':'').$days.' day'.($days>1?'s':''):''; |
|---|
| 271 | | } elseif ($days>0) { |
|---|
| 272 | | // days and hours |
|---|
| 273 | | $relative_date .= ($relative_date?', ':'').$days.' day'.($days>1?'s':''); |
|---|
| 274 | | $relative_date .= $hours>0?($relative_date?', ':'').$hours.' hour'.($hours>1?'s':''):''; |
|---|
| 275 | | } elseif ($hours>0) { |
|---|
| 276 | | // hours and minutes |
|---|
| 277 | | $relative_date .= ($relative_date?', ':'').$hours.' hour'.($hours>1?'s':''); |
|---|
| 278 | | $relative_date .= $minutes>0?($relative_date?', ':'').$minutes.' minute'.($minutes>1?'s':''):''; |
|---|
| 279 | | } elseif ($minutes>0) { |
|---|
| 280 | | // minutes only |
|---|
| 281 | | $relative_date .= ($relative_date?', ':'').$minutes.' minute'.($minutes>1?'s':''); |
|---|
| 282 | | } else { |
|---|
| 283 | | // seconds only |
|---|
| 284 | | $relative_date .= ($relative_date?', ':'').$seconds.' second'.($seconds>1?'s':''); |
|---|
| 285 | | } |
|---|
| 286 | | } |
|---|
| 287 | | // show relative date and add proper verbiage |
|---|
| 288 | | return $relative_date.' ago'; |
|---|
| 289 | | } |
|---|
| | 235 | function doRelativeDate($in_seconds) { |
|---|
| | 236 | /** |
|---|
| | 237 | This function returns either a relative date or a formatted date depending |
|---|
| | 238 | on the difference between the current datetime and the datetime passed. |
|---|
| | 239 | $posted_date should be in the following format: YYYYMMDDHHMMSS |
|---|
| | 240 | |
|---|
| | 241 | Relative dates look something like this: |
|---|
| | 242 | 3 weeks, 4 days ago |
|---|
| | 243 | |
|---|
| | 244 | The function includes 'ago' or 'on' and assumes you'll properly add a word |
|---|
| | 245 | like 'Posted ' before the function output. |
|---|
| | 246 | **/ |
|---|
| | 247 | |
|---|
| | 248 | $diff = time()-$in_seconds; |
|---|
| | 249 | $months = floor($diff/2592000); |
|---|
| | 250 | $diff -= $months*2419200; |
|---|
| | 251 | $weeks = floor($diff/604800); |
|---|
| | 252 | $diff -= $weeks*604800; |
|---|
| | 253 | $days = floor($diff/86400); |
|---|
| | 254 | $diff -= $days*86400; |
|---|
| | 255 | $hours = floor($diff/3600); |
|---|
| | 256 | $diff -= $hours*3600; |
|---|
| | 257 | $minutes = floor($diff/60); |
|---|
| | 258 | $diff -= $minutes*60; |
|---|
| | 259 | $seconds = $diff; |
|---|
| | 260 | |
|---|
| | 261 | $relative_date = ''; |
|---|
| | 262 | |
|---|
| | 263 | if ($months>0) { |
|---|
| | 264 | // over a month old, just show date (mm/dd/yyyy format) |
|---|
| | 265 | return 'on '.date('r',$in_seconds); |
|---|
| | 266 | } else { |
|---|
| | 267 | if ($weeks>0) { |
|---|
| | 268 | // weeks and days |
|---|
| | 269 | $relative_date .= ($relative_date?', ':'').$weeks.' week'.($weeks>1?'s':''); |
|---|
| | 270 | $relative_date .= $days>0?($relative_date?', ':'').$days.' day'.($days>1?'s':''):''; |
|---|
| | 271 | } elseif ($days>0) { |
|---|
| | 272 | // days and hours |
|---|
| | 273 | $relative_date .= ($relative_date?', ':'').$days.' day'.($days>1?'s':''); |
|---|
| | 274 | $relative_date .= $hours>0?($relative_date?', ':'').$hours.' hour'.($hours>1?'s':''):''; |
|---|
| | 275 | } elseif ($hours>0) { |
|---|
| | 276 | // hours and minutes |
|---|
| | 277 | $relative_date .= ($relative_date?', ':'').$hours.' hour'.($hours>1?'s':''); |
|---|
| | 278 | $relative_date .= $minutes>0?($relative_date?', ':'').$minutes.' minute'.($minutes>1?'s':''):''; |
|---|
| | 279 | } elseif ($minutes>0) { |
|---|
| | 280 | // minutes only |
|---|
| | 281 | $relative_date .= ($relative_date?', ':'').$minutes.' minute'.($minutes>1?'s':''); |
|---|
| | 282 | } else { |
|---|
| | 283 | // seconds only |
|---|
| | 284 | $relative_date .= ($relative_date?', ':'').$seconds.' second'.($seconds>1?'s':''); |
|---|
| | 285 | } |
|---|
| | 286 | } |
|---|
| | 287 | // show relative date and add proper verbiage |
|---|
| | 288 | return $relative_date.' ago'; |
|---|
| | 289 | } |
|---|