write_xlsx 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. data/.document +5 -0
  2. data/.gitattributes +1 -0
  3. data/Gemfile +12 -0
  4. data/LICENSE.txt +20 -0
  5. data/README.rdoc +82 -0
  6. data/Rakefile +78 -0
  7. data/VERSION +1 -0
  8. data/examples/a_simple.rb +45 -0
  9. data/examples/array_formula.rb +33 -0
  10. data/examples/autofilter.rb +235 -0
  11. data/examples/chart_area.rb +59 -0
  12. data/examples/chart_bar.rb +59 -0
  13. data/examples/chart_column.rb +58 -0
  14. data/examples/chart_line.rb +59 -0
  15. data/examples/chart_pie.rb +49 -0
  16. data/examples/chart_scatter.rb +59 -0
  17. data/examples/chart_stock.rb +65 -0
  18. data/examples/colors.rb +130 -0
  19. data/examples/comments1.rb +12 -0
  20. data/examples/comments2.rb +335 -0
  21. data/examples/conditional_format.rb +67 -0
  22. data/examples/data_validate.rb +279 -0
  23. data/examples/defined_name.rb +28 -0
  24. data/examples/demo.rb +104 -0
  25. data/examples/diag_border.rb +26 -0
  26. data/examples/headers.rb +119 -0
  27. data/examples/hide_sheet.rb +30 -0
  28. data/examples/hyperlink1.rb +58 -0
  29. data/examples/indent.rb +28 -0
  30. data/examples/merge1.rb +38 -0
  31. data/examples/merge2.rb +48 -0
  32. data/examples/merge3.rb +43 -0
  33. data/examples/merge4.rb +82 -0
  34. data/examples/merge5.rb +70 -0
  35. data/examples/merge6.rb +48 -0
  36. data/examples/outline.rb +252 -0
  37. data/examples/properties.rb +33 -0
  38. data/examples/protection.rb +34 -0
  39. data/examples/rich_strings.rb +42 -0
  40. data/examples/right_to_left.rb +24 -0
  41. data/examples/tab_colors.rb +26 -0
  42. data/lib/write_xlsx.rb +77 -0
  43. data/lib/write_xlsx/chart.rb +3027 -0
  44. data/lib/write_xlsx/chart/area.rb +52 -0
  45. data/lib/write_xlsx/chart/bar.rb +126 -0
  46. data/lib/write_xlsx/chart/column.rb +132 -0
  47. data/lib/write_xlsx/chart/line.rb +51 -0
  48. data/lib/write_xlsx/chart/pie.rb +210 -0
  49. data/lib/write_xlsx/chart/scatter.rb +252 -0
  50. data/lib/write_xlsx/chart/stock.rb +134 -0
  51. data/lib/write_xlsx/chartsheet.rb +173 -0
  52. data/lib/write_xlsx/colors.rb +65 -0
  53. data/lib/write_xlsx/compatibility.rb +71 -0
  54. data/lib/write_xlsx/drawing.rb +547 -0
  55. data/lib/write_xlsx/format.rb +683 -0
  56. data/lib/write_xlsx/package/app.rb +218 -0
  57. data/lib/write_xlsx/package/comments.rb +221 -0
  58. data/lib/write_xlsx/package/content_types.rb +189 -0
  59. data/lib/write_xlsx/package/core.rb +196 -0
  60. data/lib/write_xlsx/package/packager.rb +510 -0
  61. data/lib/write_xlsx/package/relationships.rb +98 -0
  62. data/lib/write_xlsx/package/shared_strings.rb +96 -0
  63. data/lib/write_xlsx/package/styles.rb +705 -0
  64. data/lib/write_xlsx/package/theme.rb +45 -0
  65. data/lib/write_xlsx/package/vml.rb +386 -0
  66. data/lib/write_xlsx/package/xml_writer_simple.rb +90 -0
  67. data/lib/write_xlsx/utility.rb +113 -0
  68. data/lib/write_xlsx/workbook.rb +1488 -0
  69. data/lib/write_xlsx/worksheet.rb +6578 -0
  70. data/lib/write_xlsx/zip_file_utils.rb +98 -0
  71. data/test/chart/test_add_series.rb +113 -0
  72. data/test/chart/test_process_names.rb +27 -0
  73. data/test/chart/test_write_auto.rb +15 -0
  74. data/test/chart/test_write_ax_id.rb +15 -0
  75. data/test/chart/test_write_ax_pos.rb +15 -0
  76. data/test/chart/test_write_chart_space.rb +15 -0
  77. data/test/chart/test_write_cross_ax.rb +15 -0
  78. data/test/chart/test_write_crosses.rb +15 -0
  79. data/test/chart/test_write_format_code.rb +15 -0
  80. data/test/chart/test_write_idx.rb +15 -0
  81. data/test/chart/test_write_label_align.rb +15 -0
  82. data/test/chart/test_write_label_offset.rb +15 -0
  83. data/test/chart/test_write_lang.rb +15 -0
  84. data/test/chart/test_write_layout.rb +15 -0
  85. data/test/chart/test_write_legend.rb +16 -0
  86. data/test/chart/test_write_legend_pos.rb +15 -0
  87. data/test/chart/test_write_major_gridlines.rb +15 -0
  88. data/test/chart/test_write_marker.rb +17 -0
  89. data/test/chart/test_write_marker_size.rb +15 -0
  90. data/test/chart/test_write_marker_value.rb +16 -0
  91. data/test/chart/test_write_num_cache.rb +16 -0
  92. data/test/chart/test_write_num_fmt.rb +16 -0
  93. data/test/chart/test_write_number_format.rb +15 -0
  94. data/test/chart/test_write_order.rb +15 -0
  95. data/test/chart/test_write_orientation.rb +15 -0
  96. data/test/chart/test_write_page_margins.rb +15 -0
  97. data/test/chart/test_write_page_setup.rb +15 -0
  98. data/test/chart/test_write_plot_vis_only.rb +15 -0
  99. data/test/chart/test_write_pt.rb +16 -0
  100. data/test/chart/test_write_pt_count.rb +16 -0
  101. data/test/chart/test_write_series_formula.rb +16 -0
  102. data/test/chart/test_write_style.rb +41 -0
  103. data/test/chart/test_write_symbol.rb +16 -0
  104. data/test/chart/test_write_tick_lbl_pos.rb +16 -0
  105. data/test/chart/test_write_v.rb +16 -0
  106. data/test/drawing/test_drawing_chart_01.rb +50 -0
  107. data/test/drawing/test_drawing_image_01.rb +59 -0
  108. data/test/helper.rb +90 -0
  109. data/test/package/app/test_app01.rb +44 -0
  110. data/test/package/app/test_app02.rb +46 -0
  111. data/test/package/app/test_app03.rb +53 -0
  112. data/test/package/comments/test_comments01.rb +36 -0
  113. data/test/package/comments/test_write_text_t.rb +44 -0
  114. data/test/package/content_types/test_content_types.rb +35 -0
  115. data/test/package/content_types/test_write_default.rb +13 -0
  116. data/test/package/content_types/test_write_override.rb +13 -0
  117. data/test/package/core/test_core01.rb +28 -0
  118. data/test/package/core/test_core02.rb +42 -0
  119. data/test/package/relationships/test_relationships.rb +28 -0
  120. data/test/package/relationships/test_sheet_rels.rb +22 -0
  121. data/test/package/shared_strings/test_shared_strings01.rb +30 -0
  122. data/test/package/shared_strings/test_shared_strings02.rb +30 -0
  123. data/test/package/shared_strings/test_write_si.rb +13 -0
  124. data/test/package/shared_strings/test_write_sst.rb +15 -0
  125. data/test/package/styles/test_styles_01.rb +69 -0
  126. data/test/package/styles/test_styles_02.rb +104 -0
  127. data/test/package/styles/test_styles_03.rb +90 -0
  128. data/test/package/styles/test_styles_04.rb +216 -0
  129. data/test/package/styles/test_styles_05.rb +150 -0
  130. data/test/package/styles/test_styles_06.rb +104 -0
  131. data/test/package/styles/test_styles_07.rb +104 -0
  132. data/test/package/styles/test_styles_08.rb +109 -0
  133. data/test/package/styles/test_styles_09.rb +95 -0
  134. data/test/package/vml/test_vml_01.rb +42 -0
  135. data/test/package/vml/test_write_anchor.rb +14 -0
  136. data/test/package/vml/test_write_auto_fill.rb +14 -0
  137. data/test/package/vml/test_write_column.rb +14 -0
  138. data/test/package/vml/test_write_div.rb +14 -0
  139. data/test/package/vml/test_write_fill.rb +14 -0
  140. data/test/package/vml/test_write_idmap.rb +14 -0
  141. data/test/package/vml/test_write_move_with_cells.rb +14 -0
  142. data/test/package/vml/test_write_path.rb +22 -0
  143. data/test/package/vml/test_write_row.rb +14 -0
  144. data/test/package/vml/test_write_shadow.rb +14 -0
  145. data/test/package/vml/test_write_shapelayout.rb +14 -0
  146. data/test/package/vml/test_write_shapetype.rb +14 -0
  147. data/test/package/vml/test_write_size_with_cells.rb +14 -0
  148. data/test/package/vml/test_write_stroke.rb +14 -0
  149. data/test/package/vml/test_write_textbox.rb +14 -0
  150. data/test/perl_output/a_simple.xlsx +0 -0
  151. data/test/perl_output/array_formula.xlsx +0 -0
  152. data/test/perl_output/autofilter.xlsx +0 -0
  153. data/test/perl_output/chart_area.xlsx +0 -0
  154. data/test/perl_output/chart_bar.xlsx +0 -0
  155. data/test/perl_output/chart_column.xlsx +0 -0
  156. data/test/perl_output/chart_line.xlsx +0 -0
  157. data/test/perl_output/chart_pie.xlsx +0 -0
  158. data/test/perl_output/chart_scatter.xlsx +0 -0
  159. data/test/perl_output/chart_stock.xlsx +0 -0
  160. data/test/perl_output/comments1.xlsx +0 -0
  161. data/test/perl_output/comments2.xlsx +0 -0
  162. data/test/perl_output/conditional_format.xlsx +0 -0
  163. data/test/perl_output/data_validate.xlsx +0 -0
  164. data/test/perl_output/defined_name.xlsx +0 -0
  165. data/test/perl_output/demo.xlsx +0 -0
  166. data/test/perl_output/diag_border.xlsx +0 -0
  167. data/test/perl_output/fit_to_pages.xlsx +0 -0
  168. data/test/perl_output/headers.xlsx +0 -0
  169. data/test/perl_output/hide_sheet.xlsx +0 -0
  170. data/test/perl_output/hyperlink.xlsx +0 -0
  171. data/test/perl_output/indent.xlsx +0 -0
  172. data/test/perl_output/merge1.xlsx +0 -0
  173. data/test/perl_output/merge2.xlsx +0 -0
  174. data/test/perl_output/merge3.xlsx +0 -0
  175. data/test/perl_output/merge4.xlsx +0 -0
  176. data/test/perl_output/merge5.xlsx +0 -0
  177. data/test/perl_output/merge6.xlsx +0 -0
  178. data/test/perl_output/outline.xlsx +0 -0
  179. data/test/perl_output/print_scale.xlsx +0 -0
  180. data/test/perl_output/properties.xlsx +0 -0
  181. data/test/perl_output/protection.xlsx +0 -0
  182. data/test/perl_output/rich_strings.xlsx +0 -0
  183. data/test/perl_output/right_to_left.xlsx +0 -0
  184. data/test/perl_output/tab_colors.xlsx +0 -0
  185. data/test/test_delete_files.rb +37 -0
  186. data/test/test_example_match.rb +2281 -0
  187. data/test/test_xml_writer_simple.rb +63 -0
  188. data/test/workbook/test_get_chart_range.rb +59 -0
  189. data/test/workbook/test_sort_defined_names.rb +77 -0
  190. data/test/workbook/test_workbook_01.rb +29 -0
  191. data/test/workbook/test_workbook_02.rb +31 -0
  192. data/test/workbook/test_workbook_03.rb +31 -0
  193. data/test/workbook/test_workbook_new.rb +18 -0
  194. data/test/workbook/test_write_defined_name.rb +17 -0
  195. data/test/workbook/test_write_defined_names.rb +41 -0
  196. data/test/worksheet/test_calculate_spans.rb +58 -0
  197. data/test/worksheet/test_convert_date_time_01.rb +439 -0
  198. data/test/worksheet/test_convert_date_time_02.rb +478 -0
  199. data/test/worksheet/test_convert_date_time_03.rb +435 -0
  200. data/test/worksheet/test_extract_filter_tokens.rb +109 -0
  201. data/test/worksheet/test_parse_filter_expression.rb +143 -0
  202. data/test/worksheet/test_position_object.rb +50 -0
  203. data/test/worksheet/test_repeat_formula.rb +55 -0
  204. data/test/worksheet/test_worksheet_01.rb +32 -0
  205. data/test/worksheet/test_worksheet_02.rb +38 -0
  206. data/test/worksheet/test_worksheet_03.rb +44 -0
  207. data/test/worksheet/test_worksheet_04.rb +45 -0
  208. data/test/worksheet/test_write_array_formula_01.rb +99 -0
  209. data/test/worksheet/test_write_autofilter.rb +260 -0
  210. data/test/worksheet/test_write_brk.rb +18 -0
  211. data/test/worksheet/test_write_cell.rb +49 -0
  212. data/test/worksheet/test_write_cell_value.rb +33 -0
  213. data/test/worksheet/test_write_col_breaks.rb +27 -0
  214. data/test/worksheet/test_write_col_info.rb +95 -0
  215. data/test/worksheet/test_write_conditional_formatting.rb +72 -0
  216. data/test/worksheet/test_write_custom_filter.rb +18 -0
  217. data/test/worksheet/test_write_custom_filters.rb +25 -0
  218. data/test/worksheet/test_write_data_validation_01.rb +113 -0
  219. data/test/worksheet/test_write_data_validation_02.rb +528 -0
  220. data/test/worksheet/test_write_dimension.rb +94 -0
  221. data/test/worksheet/test_write_ext.rb +18 -0
  222. data/test/worksheet/test_write_ext_lst.rb +18 -0
  223. data/test/worksheet/test_write_filter.rb +18 -0
  224. data/test/worksheet/test_write_filter_column.rb +18 -0
  225. data/test/worksheet/test_write_filters.rb +32 -0
  226. data/test/worksheet/test_write_header_footer.rb +53 -0
  227. data/test/worksheet/test_write_hyperlink.rb +39 -0
  228. data/test/worksheet/test_write_hyperlinks.rb +27 -0
  229. data/test/worksheet/test_write_legacy_drawing.rb +19 -0
  230. data/test/worksheet/test_write_merge_cell.rb +18 -0
  231. data/test/worksheet/test_write_merge_cells.rb +192 -0
  232. data/test/worksheet/test_write_methods.rb +353 -0
  233. data/test/worksheet/test_write_mx_plv.rb +19 -0
  234. data/test/worksheet/test_write_page_margins.rb +98 -0
  235. data/test/worksheet/test_write_page_set_up_pr.rb +19 -0
  236. data/test/worksheet/test_write_page_setup.rb +54 -0
  237. data/test/worksheet/test_write_pane.rb +123 -0
  238. data/test/worksheet/test_write_phonetic_pr.rb +19 -0
  239. data/test/worksheet/test_write_print_options.rb +77 -0
  240. data/test/worksheet/test_write_row_breaks.rb +27 -0
  241. data/test/worksheet/test_write_row_element.rb +69 -0
  242. data/test/worksheet/test_write_selection.rb +18 -0
  243. data/test/worksheet/test_write_sheet_calc_pr.rb +18 -0
  244. data/test/worksheet/test_write_sheet_data.rb +18 -0
  245. data/test/worksheet/test_write_sheet_format_pr.rb +18 -0
  246. data/test/worksheet/test_write_sheet_pr.rb +36 -0
  247. data/test/worksheet/test_write_sheet_protection.rb +174 -0
  248. data/test/worksheet/test_write_sheet_view.rb +62 -0
  249. data/test/worksheet/test_write_sheet_view1.rb +64 -0
  250. data/test/worksheet/test_write_sheet_view2.rb +56 -0
  251. data/test/worksheet/test_write_sheet_view3.rb +83 -0
  252. data/test/worksheet/test_write_sheet_view4.rb +83 -0
  253. data/test/worksheet/test_write_sheet_view5.rb +74 -0
  254. data/test/worksheet/test_write_sheet_view6.rb +51 -0
  255. data/test/worksheet/test_write_sheet_view7.rb +71 -0
  256. data/test/worksheet/test_write_sheet_view8.rb +51 -0
  257. data/test/worksheet/test_write_sheet_view9.rb +51 -0
  258. data/test/worksheet/test_write_tab_color.rb +23 -0
  259. data/test/worksheet/test_write_worksheet.rb +19 -0
  260. data/write_xlsx.gemspec +308 -0
  261. metadata +363 -0
@@ -0,0 +1,478 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+ require 'write_xlsx'
4
+ require 'stringio'
5
+
6
+ class TestConvertDateTime01 < Test::Unit::TestCase
7
+ def setup
8
+ @workbook = WriteXLSX.new(StringIO.new)
9
+ @worksheet = @workbook.add_worksheet('')
10
+ end
11
+
12
+ def test_convert_date_time
13
+ data_for_test.split(/\n/).each do |line|
14
+ @workbook.date_1904 = false if line =~ /Excel 1900/
15
+ @workbook.date_1904 = true if line =~ /Excel 1904/
16
+
17
+ next unless line =~ /\S/
18
+ next if line =~ /^#/
19
+
20
+ count, date, expected = line.split
21
+ expected = expected.to_i
22
+
23
+ result = @worksheet.convert_date_time(date)
24
+ result = -1 if result.nil?
25
+
26
+ assert_equal(expected, result, line)
27
+ end
28
+ end
29
+
30
+ def data_for_test
31
+ <<EOS
32
+ #
33
+ # The following data was generated by Excel.
34
+ #
35
+
36
+ #
37
+ # Excel 1900 date system
38
+ #
39
+ 1 1899-12-31T 0
40
+ 2 1900-01-00T 0
41
+ 3 1900-01-01T 1
42
+ 4 1900-02-27T 58
43
+ 5 1900-02-28T 59
44
+ 6 1900-02-29T 60
45
+ 7 1900-03-01T 61
46
+ 8 1900-03-02T 62
47
+ 9 1900-03-11T 71
48
+ 10 1900-04-08T 99
49
+ 11 1900-09-12T 256
50
+ 12 1901-05-03T 489
51
+ 13 1901-10-13T 652
52
+ 14 1902-02-15T 777
53
+ 15 1902-06-06T 888
54
+ 16 1902-09-25T 999
55
+ 17 1902-09-27T 1001
56
+ 18 1903-04-26T 1212
57
+ 19 1903-08-05T 1313
58
+ 20 1903-12-31T 1461
59
+ 21 1904-01-01T 1462
60
+ 22 1904-02-28T 1520
61
+ 23 1904-02-29T 1521
62
+ 24 1904-03-01T 1522
63
+ 25 1907-02-27T 2615
64
+ 26 1907-02-28T 2616
65
+ 27 1907-03-01T 2617
66
+ 28 1907-03-02T 2618
67
+ 29 1907-03-03T 2619
68
+ 30 1907-03-04T 2620
69
+ 31 1907-03-05T 2621
70
+ 32 1907-03-06T 2622
71
+ 33 1999-01-01T 36161
72
+ 34 1999-01-31T 36191
73
+ 35 1999-02-01T 36192
74
+ 36 1999-02-28T 36219
75
+ 37 1999-03-01T 36220
76
+ 38 1999-03-31T 36250
77
+ 39 1999-04-01T 36251
78
+ 40 1999-04-30T 36280
79
+ 41 1999-05-01T 36281
80
+ 42 1999-05-31T 36311
81
+ 43 1999-06-01T 36312
82
+ 44 1999-06-30T 36341
83
+ 45 1999-07-01T 36342
84
+ 46 1999-07-31T 36372
85
+ 47 1999-08-01T 36373
86
+ 48 1999-08-31T 36403
87
+ 49 1999-09-01T 36404
88
+ 50 1999-09-30T 36433
89
+ 51 1999-10-01T 36434
90
+ 52 1999-10-31T 36464
91
+ 53 1999-11-01T 36465
92
+ 54 1999-11-30T 36494
93
+ 55 1999-12-01T 36495
94
+ 56 1999-12-31T 36525
95
+ 57 2000-01-01T 36526
96
+ 58 2000-01-31T 36556
97
+ 59 2000-02-01T 36557
98
+ 60 2000-02-29T 36585
99
+ 61 2000-03-01T 36586
100
+ 62 2000-03-31T 36616
101
+ 63 2000-04-01T 36617
102
+ 64 2000-04-30T 36646
103
+ 65 2000-05-01T 36647
104
+ 66 2000-05-31T 36677
105
+ 67 2000-06-01T 36678
106
+ 68 2000-06-30T 36707
107
+ 69 2000-07-01T 36708
108
+ 70 2000-07-31T 36738
109
+ 71 2000-08-01T 36739
110
+ 72 2000-08-31T 36769
111
+ 73 2000-09-01T 36770
112
+ 74 2000-09-30T 36799
113
+ 75 2000-10-01T 36800
114
+ 76 2000-10-31T 36830
115
+ 77 2000-11-01T 36831
116
+ 78 2000-11-30T 36860
117
+ 79 2000-12-01T 36861
118
+ 80 2000-12-31T 36891
119
+ 81 2001-01-01T 36892
120
+ 82 2001-01-31T 36922
121
+ 83 2001-02-01T 36923
122
+ 84 2001-02-28T 36950
123
+ 85 2001-03-01T 36951
124
+ 86 2001-03-31T 36981
125
+ 87 2001-04-01T 36982
126
+ 88 2001-04-30T 37011
127
+ 89 2001-05-01T 37012
128
+ 90 2001-05-31T 37042
129
+ 91 2001-06-01T 37043
130
+ 92 2001-06-30T 37072
131
+ 93 2001-07-01T 37073
132
+ 94 2001-07-31T 37103
133
+ 95 2001-08-01T 37104
134
+ 96 2001-08-31T 37134
135
+ 97 2001-09-01T 37135
136
+ 98 2001-09-30T 37164
137
+ 99 2001-10-01T 37165
138
+ 100 2001-10-31T 37195
139
+ 101 2001-11-01T 37196
140
+ 102 2001-11-30T 37225
141
+ 103 2001-12-01T 37226
142
+ 104 2001-12-31T 37256
143
+ 105 2400-01-01T 182623
144
+ 106 2400-01-31T 182653
145
+ 107 2400-02-01T 182654
146
+ 108 2400-02-29T 182682
147
+ 109 2400-03-01T 182683
148
+ 110 2400-03-31T 182713
149
+ 111 2400-04-01T 182714
150
+ 112 2400-04-30T 182743
151
+ 113 2400-05-01T 182744
152
+ 114 2400-05-31T 182774
153
+ 115 2400-06-01T 182775
154
+ 116 2400-06-30T 182804
155
+ 117 2400-07-01T 182805
156
+ 118 2400-07-31T 182835
157
+ 119 2400-08-01T 182836
158
+ 120 2400-08-31T 182866
159
+ 121 2400-09-01T 182867
160
+ 122 2400-09-30T 182896
161
+ 123 2400-10-01T 182897
162
+ 124 2400-10-31T 182927
163
+ 125 2400-11-01T 182928
164
+ 126 2400-11-30T 182957
165
+ 127 2400-12-01T 182958
166
+ 128 2400-12-31T 182988
167
+ 129 4000-01-01T 767011
168
+ 130 4000-01-31T 767041
169
+ 131 4000-02-01T 767042
170
+ 132 4000-02-29T 767070
171
+ 133 4000-03-01T 767071
172
+ 134 4000-03-31T 767101
173
+ 135 4000-04-01T 767102
174
+ 136 4000-04-30T 767131
175
+ 137 4000-05-01T 767132
176
+ 138 4000-05-31T 767162
177
+ 139 4000-06-01T 767163
178
+ 140 4000-06-30T 767192
179
+ 141 4000-07-01T 767193
180
+ 142 4000-07-31T 767223
181
+ 143 4000-08-01T 767224
182
+ 144 4000-08-31T 767254
183
+ 145 4000-09-01T 767255
184
+ 146 4000-09-30T 767284
185
+ 147 4000-10-01T 767285
186
+ 148 4000-10-31T 767315
187
+ 149 4000-11-01T 767316
188
+ 150 4000-11-30T 767345
189
+ 151 4000-12-01T 767346
190
+ 152 4000-12-31T 767376
191
+ 153 4321-01-01T 884254
192
+ 154 4321-01-31T 884284
193
+ 155 4321-02-01T 884285
194
+ 156 4321-02-28T 884312
195
+ 157 4321-03-01T 884313
196
+ 158 4321-03-31T 884343
197
+ 159 4321-04-01T 884344
198
+ 160 4321-04-30T 884373
199
+ 161 4321-05-01T 884374
200
+ 162 4321-05-31T 884404
201
+ 163 4321-06-01T 884405
202
+ 164 4321-06-30T 884434
203
+ 165 4321-07-01T 884435
204
+ 166 4321-07-31T 884465
205
+ 167 4321-08-01T 884466
206
+ 168 4321-08-31T 884496
207
+ 169 4321-09-01T 884497
208
+ 170 4321-09-30T 884526
209
+ 171 4321-10-01T 884527
210
+ 172 4321-10-31T 884557
211
+ 173 4321-11-01T 884558
212
+ 174 4321-11-30T 884587
213
+ 175 4321-12-01T 884588
214
+ 176 4321-12-31T 884618
215
+ 177 9999-01-01T 2958101
216
+ 178 9999-01-31T 2958131
217
+ 179 9999-02-01T 2958132
218
+ 180 9999-02-28T 2958159
219
+ 181 9999-03-01T 2958160
220
+ 182 9999-03-31T 2958190
221
+ 183 9999-04-01T 2958191
222
+ 184 9999-04-30T 2958220
223
+ 185 9999-05-01T 2958221
224
+ 186 9999-05-31T 2958251
225
+ 187 9999-06-01T 2958252
226
+ 188 9999-06-30T 2958281
227
+ 189 9999-07-01T 2958282
228
+ 190 9999-07-31T 2958312
229
+ 191 9999-08-01T 2958313
230
+ 192 9999-08-31T 2958343
231
+ 193 9999-09-01T 2958344
232
+ 194 9999-09-30T 2958373
233
+ 195 9999-10-01T 2958374
234
+ 196 9999-10-31T 2958404
235
+ 197 9999-11-01T 2958405
236
+ 198 9999-11-30T 2958434
237
+ 199 9999-12-01T 2958435
238
+ 200 9999-12-31T 2958465
239
+
240
+ #
241
+ # Excel 1904 date system
242
+ #
243
+ 201 1904-01-01T 0
244
+ 202 1904-01-31T 30
245
+ 203 1904-02-01T 31
246
+ 204 1904-02-29T 59
247
+ 205 1904-03-01T 60
248
+ 206 1904-03-31T 90
249
+ 207 1904-04-01T 91
250
+ 208 1904-04-30T 120
251
+ 209 1904-05-01T 121
252
+ 210 1904-05-31T 151
253
+ 211 1904-06-01T 152
254
+ 212 1904-06-30T 181
255
+ 213 1904-07-01T 182
256
+ 214 1904-07-31T 212
257
+ 215 1904-08-01T 213
258
+ 216 1904-08-31T 243
259
+ 217 1904-09-01T 244
260
+ 218 1904-09-30T 273
261
+ 219 1904-10-01T 274
262
+ 220 1904-10-31T 304
263
+ 221 1904-11-01T 305
264
+ 222 1904-11-30T 334
265
+ 223 1904-12-01T 335
266
+ 224 1904-12-31T 365
267
+ 225 1907-02-27T 1153
268
+ 226 1907-02-28T 1154
269
+ 227 1907-03-01T 1155
270
+ 228 1907-03-02T 1156
271
+ 229 1907-03-03T 1157
272
+ 230 1907-03-04T 1158
273
+ 231 1907-03-05T 1159
274
+ 232 1907-03-06T 1160
275
+ 233 1999-01-01T 34699
276
+ 234 1999-01-31T 34729
277
+ 235 1999-02-01T 34730
278
+ 236 1999-02-28T 34757
279
+ 237 1999-03-01T 34758
280
+ 238 1999-03-31T 34788
281
+ 239 1999-04-01T 34789
282
+ 240 1999-04-30T 34818
283
+ 241 1999-05-01T 34819
284
+ 242 1999-05-31T 34849
285
+ 243 1999-06-01T 34850
286
+ 244 1999-06-30T 34879
287
+ 245 1999-07-01T 34880
288
+ 246 1999-07-31T 34910
289
+ 247 1999-08-01T 34911
290
+ 248 1999-08-31T 34941
291
+ 249 1999-09-01T 34942
292
+ 250 1999-09-30T 34971
293
+ 251 1999-10-01T 34972
294
+ 252 1999-10-31T 35002
295
+ 253 1999-11-01T 35003
296
+ 254 1999-11-30T 35032
297
+ 255 1999-12-01T 35033
298
+ 256 1999-12-31T 35063
299
+ 257 2000-01-01T 35064
300
+ 258 2000-01-31T 35094
301
+ 259 2000-02-01T 35095
302
+ 260 2000-02-29T 35123
303
+ 261 2000-03-01T 35124
304
+ 262 2000-03-31T 35154
305
+ 263 2000-04-01T 35155
306
+ 264 2000-04-30T 35184
307
+ 265 2000-05-01T 35185
308
+ 266 2000-05-31T 35215
309
+ 267 2000-06-01T 35216
310
+ 268 2000-06-30T 35245
311
+ 269 2000-07-01T 35246
312
+ 270 2000-07-31T 35276
313
+ 271 2000-08-01T 35277
314
+ 272 2000-08-31T 35307
315
+ 273 2000-09-01T 35308
316
+ 274 2000-09-30T 35337
317
+ 275 2000-10-01T 35338
318
+ 276 2000-10-31T 35368
319
+ 277 2000-11-01T 35369
320
+ 278 2000-11-30T 35398
321
+ 279 2000-12-01T 35399
322
+ 280 2000-12-31T 35429
323
+ 281 2001-01-01T 35430
324
+ 282 2001-01-31T 35460
325
+ 283 2001-02-01T 35461
326
+ 284 2001-02-28T 35488
327
+ 285 2001-03-01T 35489
328
+ 286 2001-03-31T 35519
329
+ 287 2001-04-01T 35520
330
+ 288 2001-04-30T 35549
331
+ 289 2001-05-01T 35550
332
+ 290 2001-05-31T 35580
333
+ 291 2001-06-01T 35581
334
+ 292 2001-06-30T 35610
335
+ 293 2001-07-01T 35611
336
+ 294 2001-07-31T 35641
337
+ 295 2001-08-01T 35642
338
+ 296 2001-08-31T 35672
339
+ 297 2001-09-01T 35673
340
+ 298 2001-09-30T 35702
341
+ 299 2001-10-01T 35703
342
+ 300 2001-10-31T 35733
343
+ 301 2001-11-01T 35734
344
+ 302 2001-11-30T 35763
345
+ 303 2001-12-01T 35764
346
+ 304 2001-12-31T 35794
347
+ 305 2400-01-01T 181161
348
+ 306 2400-01-31T 181191
349
+ 307 2400-02-01T 181192
350
+ 308 2400-02-29T 181220
351
+ 309 2400-03-01T 181221
352
+ 310 2400-03-31T 181251
353
+ 311 2400-04-01T 181252
354
+ 312 2400-04-30T 181281
355
+ 313 2400-05-01T 181282
356
+ 314 2400-05-31T 181312
357
+ 315 2400-06-01T 181313
358
+ 316 2400-06-30T 181342
359
+ 317 2400-07-01T 181343
360
+ 318 2400-07-31T 181373
361
+ 319 2400-08-01T 181374
362
+ 320 2400-08-31T 181404
363
+ 321 2400-09-01T 181405
364
+ 322 2400-09-30T 181434
365
+ 323 2400-10-01T 181435
366
+ 324 2400-10-31T 181465
367
+ 325 2400-11-01T 181466
368
+ 326 2400-11-30T 181495
369
+ 327 2400-12-01T 181496
370
+ 328 2400-12-31T 181526
371
+ 329 4000-01-01T 765549
372
+ 330 4000-01-31T 765579
373
+ 331 4000-02-01T 765580
374
+ 332 4000-02-29T 765608
375
+ 333 4000-03-01T 765609
376
+ 334 4000-03-31T 765639
377
+ 335 4000-04-01T 765640
378
+ 336 4000-04-30T 765669
379
+ 337 4000-05-01T 765670
380
+ 338 4000-05-31T 765700
381
+ 339 4000-06-01T 765701
382
+ 340 4000-06-30T 765730
383
+ 341 4000-07-01T 765731
384
+ 342 4000-07-31T 765761
385
+ 343 4000-08-01T 765762
386
+ 344 4000-08-31T 765792
387
+ 345 4000-09-01T 765793
388
+ 346 4000-09-30T 765822
389
+ 347 4000-10-01T 765823
390
+ 348 4000-10-31T 765853
391
+ 349 4000-11-01T 765854
392
+ 350 4000-11-30T 765883
393
+ 351 4000-12-01T 765884
394
+ 352 4000-12-31T 765914
395
+ 353 4321-01-01T 882792
396
+ 354 4321-01-31T 882822
397
+ 355 4321-02-01T 882823
398
+ 356 4321-02-28T 882850
399
+ 357 4321-03-01T 882851
400
+ 358 4321-03-31T 882881
401
+ 359 4321-04-01T 882882
402
+ 360 4321-04-30T 882911
403
+ 361 4321-05-01T 882912
404
+ 362 4321-05-31T 882942
405
+ 363 4321-06-01T 882943
406
+ 364 4321-06-30T 882972
407
+ 365 4321-07-01T 882973
408
+ 366 4321-07-31T 883003
409
+ 367 4321-08-01T 883004
410
+ 368 4321-08-31T 883034
411
+ 369 4321-09-01T 883035
412
+ 370 4321-09-30T 883064
413
+ 371 4321-10-01T 883065
414
+ 372 4321-10-31T 883095
415
+ 373 4321-11-01T 883096
416
+ 374 4321-11-30T 883125
417
+ 375 4321-12-01T 883126
418
+ 376 4321-12-31T 883156
419
+ 377 9999-01-01T 2956639
420
+ 378 9999-01-31T 2956669
421
+ 379 9999-02-01T 2956670
422
+ 380 9999-02-28T 2956697
423
+ 381 9999-03-01T 2956698
424
+ 382 9999-03-31T 2956728
425
+ 383 9999-04-01T 2956729
426
+ 384 9999-04-30T 2956758
427
+ 385 9999-05-01T 2956759
428
+ 386 9999-05-31T 2956789
429
+ 387 9999-06-01T 2956790
430
+ 388 9999-06-30T 2956819
431
+ 389 9999-07-01T 2956820
432
+ 390 9999-07-31T 2956850
433
+ 391 9999-08-01T 2956851
434
+ 392 9999-08-31T 2956881
435
+ 393 9999-09-01T 2956882
436
+ 394 9999-09-30T 2956911
437
+ 395 9999-10-01T 2956912
438
+ 396 9999-10-31T 2956942
439
+ 397 9999-11-01T 2956943
440
+ 398 9999-11-30T 2956972
441
+ 399 9999-12-01T 2956973
442
+ 400 9999-12-31T 2957003
443
+
444
+
445
+ #
446
+ # The following dates are invalid.
447
+ #
448
+
449
+ #
450
+ # Excel 1900 date system
451
+ #
452
+ 401 0000-12-30T -1 # Below year range.
453
+ 402 1000-12-30T -1 # Below year range.
454
+ 403 1899-12-30T -1 # Below year range.
455
+ 404 2002-02-29T -1 # False leap-day.
456
+ 405 2000-00-00T -1 # No month or day.
457
+ 406 2000-01-00T -1 # No day.
458
+ 407 2000-00-01T -1 # No month.
459
+ 408 2000-13-01T -1 # Month out of range.
460
+ 409 2000-12-32T -1 # Day out of range.
461
+ 410 10000-01-01T -1 # Year out of range.
462
+
463
+ #
464
+ # Excel 1904 date system
465
+ #
466
+ 411 1899-12-31T -1 # Below year range.
467
+ 412 1900-01-01T -1 # Below year range.
468
+ 413 1903-12-31T -1 # Below year range.
469
+ 414 2001-02-29T -1 # False leap-day.
470
+ 415 2000-00-00T -1 # No month or day.
471
+ 416 2000-01-00T -1 # No day.
472
+ 417 2000-00-01T -1 # No month.
473
+ 418 2000-13-01T -1 # Month out of range.
474
+ 419 2000-12-32T -1 # Day out of range.
475
+ 420 10000-01-01T -1 # Year out of range.
476
+ EOS
477
+ end
478
+ end