checkat.c++
上传用户:weiyuanprp
上传日期:2020-05-20
资源大小:1169k
文件大小:2k
源码类别:

传真(Fax)编程

开发平台:

C/C++

  1. #include "Str.h"
  2. #include <time.h>
  3. extern int parseAtSyntax(const char*, const struct tm&, struct tm&, fxStr& emsg);
  4. static const char* days[] = {
  5.     "Sunday", "Monday", "Tuesday", "Wednesday",
  6.     "Thursday", "Friday", "Saturday"
  7. };
  8. static const char* months[] = {
  9.     "January", "February", "March", "April", "May", "June", "July",
  10.     "August", "September", "October", "November", "December"
  11. };
  12. static void
  13. print(const char* tag, const struct tm& t)
  14. {
  15.     printf("%-24s: %s %s %u, %u %u:%02u:%02u (%u yday)n",
  16. tag,
  17. days[t.tm_wday],
  18. months[t.tm_mon], t.tm_mday, 1900+t.tm_year,
  19. t.tm_hour, t.tm_min, t.tm_sec,
  20. t.tm_yday
  21.     );
  22. }
  23. static void
  24. doit(const char* s)
  25. {
  26.     time_t t = time(0);
  27.     struct tm now = *localtime(&t);
  28.     struct tm at;
  29.     fxStr emsg;
  30.     if (parseAtSyntax(s, now, at, emsg))
  31. print(s, at);
  32.     else
  33. printf("%-24s: %s.n", s, (const char*) emsg);
  34. }
  35. int
  36. main(int argc, char* argv[])
  37. {
  38.     if (argc == 1) {
  39. doit("8");
  40. doit("10");
  41. doit("80");
  42. doit("1100");
  43. doit("2300zulu");
  44. doit("8pm");
  45. doit("8am");
  46. doit("10am");
  47. doit("10pm");
  48. doit("0815am");
  49. doit("8:15am");
  50. doit("now");
  51. doit("noon");
  52. doit("midnight");
  53. doit("next");
  54. doit("0815am Jan 24");
  55. doit("8:15am Jan 24");
  56. doit("1:30 today");
  57. doit("1:30 tomorrow");
  58. doit("midnight Monday");
  59. doit("midnight mon");
  60. doit("next Tuesday");
  61. doit("next tue");
  62. doit("noon Wednesday");
  63. doit("noon wed");
  64. doit("next Thursday");
  65. doit("next thu");
  66. doit("8pm Friday");
  67. doit("8pm fri");
  68. doit("5 pm Friday");
  69. doit("6am Saturday");
  70. doit("6am sat");
  71. doit("7:30 Sunday");
  72. doit("7:30 sun");
  73. doit("8:15am Jan 24, 1993");
  74. doit("8:15am Jan 24, 1994");
  75. doit("now + 1 minute");
  76. doit("now + 1 hour");
  77. doit("now + 1 day");
  78. doit("now + 1 week");
  79. doit("now + 1 month");
  80. doit("now + 1 year");
  81. doit("now + 120 minutes");
  82.     } else {
  83. fxStr s;
  84. for (int i = 1; i < argc; i++)
  85.     s = s | " " | fxStr(argv[i]);
  86. doit(s);
  87.     }
  88.     return (0);
  89. }