Guest User

Untitled

a guest
Jun 23rd, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <time.h>
  3.  
  4. #define TIME_YEAR_OFFSET 1900
  5. #define PST_OFFSET -8
  6. #define EST_OFFSET -5
  7. #define AUS_OFFSET 9
  8. #define FULL_DAYS_HOURS 24
  9.  
  10. int pstHour(int dubHour){
  11. if ( dubHour < -(PST_OFFSET) ){
  12. return dubHour + (FULL_DAYS_HOURS + PST_OFFSET);
  13. }
  14. return dubHour + PST_OFFSET;
  15. }
  16.  
  17. int estHour(int dubHour){
  18. if ( dubHour < -(EST_OFFSET) ){
  19. return dubHour + (FULL_DAYS_HOURS + EST_OFFSET);
  20. }
  21. return dubHour + EST_OFFSET;
  22. }
  23.  
  24. int ausHour(int dubHour){
  25. if ( dubHour + AUS_OFFSET > FULL_DAYS_HOURS) {
  26. return dubHour + (AUS_OFFSET - FULL_DAYS_HOURS);
  27. }
  28. return dubHour + AUS_OFFSET;
  29. }
  30.  
  31. void apFromHour(int hour, int * outHour, char **outAP){
  32. *outHour = hour % 12;
  33. if(*outHour == 0){
  34. *outHour = 12;
  35. }
  36. if(hour > 11){
  37. *outAP = "PM";
  38. } else {
  39. *outAP = "AM";
  40. }
  41. }
  42.  
  43. int main() {
  44. time_t doctor = time(NULL);
  45. struct tm * tardis = localtime(&doctor);
  46.  
  47. int year = tardis->tm_year + TIME_YEAR_OFFSET;
  48. int month = tardis->tm_mon + 1;
  49.  
  50. int rawHour = tardis->tm_hour;
  51. int dubHour;
  52. char * dubAP;
  53. apFromHour(rawHour, &dubHour, &dubAP);
  54.  
  55. int sf24Hour = pstHour(rawHour);
  56. int sf12Hour;
  57. char * sfAP;
  58. apFromHour(sf24Hour, &sf12Hour, &sfAP);
  59.  
  60. int ny24Hour = estHour(rawHour);
  61. int ny12Hour;
  62. char * nyAP;
  63. apFromHour(ny24Hour, &ny12Hour, &nyAP);
  64.  
  65. int aus24Hour = ausHour(rawHour);
  66. int aus12Hour;
  67. char * ausAP;
  68. apFromHour(aus24Hour, &aus12Hour, &ausAP);
  69.  
  70. char minuteString[3];
  71. minuteString[2] = '\0';
  72. int rawMin = tardis->tm_min;
  73. if(rawMin < 10){
  74. minuteString[0] = '0';
  75. minuteString[1] = '0' + rawMin;
  76. } else {
  77. minuteString[0] = '0' + (rawMin / 10);
  78. minuteString[1] = '0' + (rawMin % 10);
  79. }
  80. printf("================================\n");
  81. printf(" << %d-%d-%d\t%d:%s %s >>\n", year, month, tardis->tm_mday, tardis->tm_hour, minuteString, tardis->tm_zone);
  82. printf("================================\n");
  83. printf("-> Melbourne: %d:%s %s\n", aus12Hour, minuteString, ausAP);
  84. printf("-> Dublin: %d:%s %s\n", dubHour, minuteString, dubAP);
  85. printf("-> New York: %d:%s %s\n", ny12Hour, minuteString, nyAP);
  86. printf("-> San Francisco: %d:%s %s\n", sf12Hour, minuteString, sfAP);
  87. return 0;
  88. }
Add Comment
Please, Sign In to add comment