re-common 10.0.39__py3-none-any.whl → 10.0.40__py3-none-any.whl

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 (218) hide show
  1. re_common/baselibrary/__init__.py +4 -4
  2. re_common/baselibrary/baseabs/__init__.py +6 -6
  3. re_common/baselibrary/baseabs/baseabs.py +26 -26
  4. re_common/baselibrary/database/mbuilder.py +132 -132
  5. re_common/baselibrary/database/moudle.py +93 -93
  6. re_common/baselibrary/database/msqlite3.py +194 -194
  7. re_common/baselibrary/database/mysql.py +169 -169
  8. re_common/baselibrary/database/sql_factory.py +26 -26
  9. re_common/baselibrary/mthread/MThreadingRun.py +486 -486
  10. re_common/baselibrary/mthread/MThreadingRunEvent.py +349 -349
  11. re_common/baselibrary/mthread/__init__.py +2 -2
  12. re_common/baselibrary/mthread/mythreading.py +695 -695
  13. re_common/baselibrary/pakge_other/socks.py +404 -404
  14. re_common/baselibrary/readconfig/config_factory.py +18 -18
  15. re_common/baselibrary/readconfig/ini_config.py +317 -317
  16. re_common/baselibrary/readconfig/toml_config.py +49 -49
  17. re_common/baselibrary/temporary/envdata.py +36 -36
  18. re_common/baselibrary/tools/all_requests/aiohttp_request.py +118 -118
  19. re_common/baselibrary/tools/all_requests/httpx_requet.py +102 -102
  20. re_common/baselibrary/tools/all_requests/mrequest.py +412 -412
  21. re_common/baselibrary/tools/all_requests/requests_request.py +81 -81
  22. re_common/baselibrary/tools/batch_compre/bijiao_batch.py +31 -31
  23. re_common/baselibrary/tools/contrast_db3.py +123 -123
  24. re_common/baselibrary/tools/copy_file.py +39 -39
  25. re_common/baselibrary/tools/db3_2_sizedb3.py +102 -102
  26. re_common/baselibrary/tools/foreachgz.py +39 -39
  27. re_common/baselibrary/tools/get_attr.py +10 -10
  28. re_common/baselibrary/tools/image_to_pdf.py +61 -61
  29. re_common/baselibrary/tools/java_code_deal.py +139 -139
  30. re_common/baselibrary/tools/javacode.py +79 -79
  31. re_common/baselibrary/tools/mdb_db3.py +48 -48
  32. re_common/baselibrary/tools/merge_file.py +171 -171
  33. re_common/baselibrary/tools/merge_gz_file.py +165 -165
  34. re_common/baselibrary/tools/mhdfstools/down_hdfs_files.py +42 -42
  35. re_common/baselibrary/tools/mhdfstools/hdfst.py +42 -42
  36. re_common/baselibrary/tools/mhdfstools/up_hdfs_files.py +38 -38
  37. re_common/baselibrary/tools/mongo_tools.py +50 -50
  38. re_common/baselibrary/tools/move_file.py +170 -170
  39. re_common/baselibrary/tools/move_mongo/mongo_table_to_file.py +63 -63
  40. re_common/baselibrary/tools/move_mongo/move_mongo_table.py +354 -354
  41. re_common/baselibrary/tools/move_mongo/use_mttf.py +18 -18
  42. re_common/baselibrary/tools/move_mongo/use_mv.py +93 -93
  43. re_common/baselibrary/tools/mpandas/mpandasreadexcel.py +125 -125
  44. re_common/baselibrary/tools/mpandas/pandas_visualization.py +7 -7
  45. re_common/baselibrary/tools/myparsel.py +104 -104
  46. re_common/baselibrary/tools/rename_dir_file.py +37 -37
  47. re_common/baselibrary/tools/sequoiadb_utils.py +398 -398
  48. re_common/baselibrary/tools/split_line_to_many.py +25 -25
  49. re_common/baselibrary/tools/stringtodicts.py +33 -33
  50. re_common/baselibrary/tools/workwechant_bot.py +84 -84
  51. re_common/baselibrary/utils/baseaiohttp.py +296 -296
  52. re_common/baselibrary/utils/baseaiomysql.py +87 -87
  53. re_common/baselibrary/utils/baseallstep.py +191 -191
  54. re_common/baselibrary/utils/baseavro.py +19 -19
  55. re_common/baselibrary/utils/baseboto3.py +291 -291
  56. re_common/baselibrary/utils/basecsv.py +32 -32
  57. re_common/baselibrary/utils/basedict.py +133 -133
  58. re_common/baselibrary/utils/basedir.py +241 -241
  59. re_common/baselibrary/utils/baseencode.py +351 -351
  60. re_common/baselibrary/utils/baseencoding.py +28 -28
  61. re_common/baselibrary/utils/baseesdsl.py +86 -86
  62. re_common/baselibrary/utils/baseexcel.py +264 -264
  63. re_common/baselibrary/utils/baseexcept.py +109 -109
  64. re_common/baselibrary/utils/basefile.py +654 -654
  65. re_common/baselibrary/utils/baseftp.py +214 -214
  66. re_common/baselibrary/utils/basegzip.py +60 -60
  67. re_common/baselibrary/utils/basehdfs.py +135 -135
  68. re_common/baselibrary/utils/basehttpx.py +268 -268
  69. re_common/baselibrary/utils/baseip.py +87 -87
  70. re_common/baselibrary/utils/basejson.py +2 -2
  71. re_common/baselibrary/utils/baselist.py +32 -32
  72. re_common/baselibrary/utils/basemotor.py +190 -190
  73. re_common/baselibrary/utils/basemssql.py +98 -98
  74. re_common/baselibrary/utils/baseodbc.py +113 -113
  75. re_common/baselibrary/utils/basepandas.py +302 -302
  76. re_common/baselibrary/utils/basepeewee.py +11 -11
  77. re_common/baselibrary/utils/basepika.py +180 -180
  78. re_common/baselibrary/utils/basepydash.py +143 -143
  79. re_common/baselibrary/utils/basepymongo.py +230 -230
  80. re_common/baselibrary/utils/basequeue.py +22 -22
  81. re_common/baselibrary/utils/baserar.py +57 -57
  82. re_common/baselibrary/utils/baserequest.py +279 -279
  83. re_common/baselibrary/utils/baseset.py +8 -8
  84. re_common/baselibrary/utils/basesmb.py +403 -403
  85. re_common/baselibrary/utils/basestring.py +382 -382
  86. re_common/baselibrary/utils/basetime.py +320 -320
  87. re_common/baselibrary/utils/baseurl.py +121 -121
  88. re_common/baselibrary/utils/basezip.py +57 -57
  89. re_common/baselibrary/utils/core/__init__.py +7 -7
  90. re_common/baselibrary/utils/core/bottomutils.py +18 -18
  91. re_common/baselibrary/utils/core/mdeprecated.py +327 -327
  92. re_common/baselibrary/utils/core/mlamada.py +16 -16
  93. re_common/baselibrary/utils/core/msginfo.py +25 -25
  94. re_common/baselibrary/utils/core/requests_core.py +103 -103
  95. re_common/baselibrary/utils/fateadm.py +429 -429
  96. re_common/baselibrary/utils/importfun.py +123 -123
  97. re_common/baselibrary/utils/mfaker.py +57 -57
  98. re_common/baselibrary/utils/my_abc/__init__.py +3 -3
  99. re_common/baselibrary/utils/my_abc/better_abc.py +32 -32
  100. re_common/baselibrary/utils/mylogger.py +414 -414
  101. re_common/baselibrary/utils/myredisclient.py +861 -861
  102. re_common/baselibrary/utils/pipupgrade.py +21 -21
  103. re_common/baselibrary/utils/ringlist.py +85 -85
  104. re_common/baselibrary/utils/version_compare.py +36 -36
  105. re_common/baselibrary/utils/ydmhttp.py +126 -126
  106. re_common/facade/lazy_import.py +11 -11
  107. re_common/facade/loggerfacade.py +25 -25
  108. re_common/facade/mysqlfacade.py +467 -467
  109. re_common/facade/now.py +31 -31
  110. re_common/facade/sqlite3facade.py +257 -257
  111. re_common/facade/use/mq_use_facade.py +83 -83
  112. re_common/facade/use/proxy_use_facade.py +19 -19
  113. re_common/libtest/base_dict_test.py +19 -19
  114. re_common/libtest/baseavro_test.py +13 -13
  115. re_common/libtest/basefile_test.py +14 -14
  116. re_common/libtest/basemssql_test.py +77 -77
  117. re_common/libtest/baseodbc_test.py +7 -7
  118. re_common/libtest/basepandas_test.py +38 -38
  119. re_common/libtest/get_attr_test/get_attr_test_settings.py +14 -14
  120. re_common/libtest/get_attr_test/settings.py +54 -54
  121. re_common/libtest/idencode_test.py +53 -53
  122. re_common/libtest/iniconfig_test.py +35 -35
  123. re_common/libtest/ip_test.py +34 -34
  124. re_common/libtest/merge_file_test.py +20 -20
  125. re_common/libtest/mfaker_test.py +8 -8
  126. re_common/libtest/mm3_test.py +31 -31
  127. re_common/libtest/mylogger_test.py +88 -88
  128. re_common/libtest/myparsel_test.py +27 -27
  129. re_common/libtest/mysql_test.py +151 -151
  130. re_common/libtest/pymongo_test.py +21 -21
  131. re_common/libtest/split_test.py +11 -11
  132. re_common/libtest/sqlite3_merge_test.py +5 -5
  133. re_common/libtest/sqlite3_test.py +34 -34
  134. re_common/libtest/tomlconfig_test.py +30 -30
  135. re_common/libtest/use_tools_test/__init__.py +2 -2
  136. re_common/libtest/user/__init__.py +4 -4
  137. re_common/studio/__init__.py +4 -4
  138. re_common/studio/assignment_expressions.py +36 -36
  139. re_common/studio/mydash/test1.py +18 -18
  140. re_common/studio/pydashstudio/first.py +9 -9
  141. re_common/studio/streamlitstudio/first_app.py +65 -65
  142. re_common/studio/streamlitstudio/uber_pickups.py +23 -23
  143. re_common/studio/test.py +18 -18
  144. re_common/v2/baselibrary/business_utils/BusinessStringUtil.py +219 -219
  145. re_common/v2/baselibrary/business_utils/baseencodeid.py +100 -100
  146. re_common/v2/baselibrary/business_utils/full_doi_path.py +116 -116
  147. re_common/v2/baselibrary/business_utils/rel_tools.py +6 -6
  148. re_common/v2/baselibrary/decorators/utils.py +59 -59
  149. re_common/v2/baselibrary/helpers/search_packge/NearestNeighbors_test.py +105 -105
  150. re_common/v2/baselibrary/helpers/search_packge/fit_text_match.py +253 -253
  151. re_common/v2/baselibrary/helpers/search_packge/scikit_learn_text_matcher.py +260 -260
  152. re_common/v2/baselibrary/helpers/search_packge/test.py +1 -1
  153. re_common/v2/baselibrary/s3object/baseboto3.py +230 -230
  154. re_common/v2/baselibrary/tools/WeChatRobot.py +95 -95
  155. re_common/v2/baselibrary/tools/ac_ahocorasick.py +75 -75
  156. re_common/v2/baselibrary/tools/concurrency.py +35 -35
  157. re_common/v2/baselibrary/tools/data_processer/base.py +53 -53
  158. re_common/v2/baselibrary/tools/data_processer/data_processer.py +508 -508
  159. re_common/v2/baselibrary/tools/data_processer/data_reader.py +187 -187
  160. re_common/v2/baselibrary/tools/data_processer/data_writer.py +38 -38
  161. re_common/v2/baselibrary/tools/dict_tools.py +44 -44
  162. re_common/v2/baselibrary/tools/dolphinscheduler.py +187 -187
  163. re_common/v2/baselibrary/tools/hdfs_base_processor.py +204 -204
  164. re_common/v2/baselibrary/tools/hdfs_bulk_processor.py +67 -67
  165. re_common/v2/baselibrary/tools/hdfs_data_processer.py +338 -338
  166. re_common/v2/baselibrary/tools/hdfs_line_processor.py +74 -74
  167. re_common/v2/baselibrary/tools/list_tools.py +69 -69
  168. re_common/v2/baselibrary/tools/resume_tracker.py +94 -94
  169. re_common/v2/baselibrary/tools/search_hash_tools.py +54 -54
  170. re_common/v2/baselibrary/tools/text_matcher.py +326 -326
  171. re_common/v2/baselibrary/tools/unionfind_tools.py +60 -60
  172. re_common/v2/baselibrary/utils/BusinessStringUtil.py +196 -196
  173. re_common/v2/baselibrary/utils/api_net_utils.py +270 -270
  174. re_common/v2/baselibrary/utils/author_smi.py +361 -361
  175. re_common/v2/baselibrary/utils/base_string_similarity.py +158 -158
  176. re_common/v2/baselibrary/utils/basedict.py +37 -37
  177. re_common/v2/baselibrary/utils/basehdfs.py +163 -163
  178. re_common/v2/baselibrary/utils/basepika.py +180 -180
  179. re_common/v2/baselibrary/utils/basetime.py +77 -77
  180. re_common/v2/baselibrary/utils/db.py +156 -156
  181. re_common/v2/baselibrary/utils/elasticsearch.py +46 -0
  182. re_common/v2/baselibrary/utils/json_cls.py +16 -16
  183. re_common/v2/baselibrary/utils/mq.py +83 -83
  184. re_common/v2/baselibrary/utils/n_ary_expression_tree.py +243 -243
  185. re_common/v2/baselibrary/utils/string_bool.py +186 -186
  186. re_common/v2/baselibrary/utils/string_clear.py +246 -246
  187. re_common/v2/baselibrary/utils/string_smi.py +18 -18
  188. re_common/v2/baselibrary/utils/stringutils.py +271 -271
  189. re_common/vip/base_step_process.py +11 -11
  190. re_common/vip/baseencodeid.py +90 -90
  191. re_common/vip/changetaskname.py +28 -28
  192. re_common/vip/core_var.py +24 -24
  193. re_common/vip/mmh3Hash.py +89 -89
  194. re_common/vip/proxy/allproxys.py +127 -127
  195. re_common/vip/proxy/allproxys_thread.py +159 -159
  196. re_common/vip/proxy/cnki_proxy.py +153 -153
  197. re_common/vip/proxy/kuaidaili.py +87 -87
  198. re_common/vip/proxy/proxy_all.py +113 -113
  199. re_common/vip/proxy/update_kuaidaili_0.py +42 -42
  200. re_common/vip/proxy/wanfang_proxy.py +152 -152
  201. re_common/vip/proxy/wp_proxy_all.py +181 -181
  202. re_common/vip/read_rawid_to_txt.py +91 -91
  203. re_common/vip/title/__init__.py +5 -5
  204. re_common/vip/title/transform/TransformBookTitleToZt.py +125 -125
  205. re_common/vip/title/transform/TransformConferenceTitleToZt.py +139 -139
  206. re_common/vip/title/transform/TransformCstadTitleToZt.py +195 -195
  207. re_common/vip/title/transform/TransformJournalTitleToZt.py +203 -203
  208. re_common/vip/title/transform/TransformPatentTitleToZt.py +132 -132
  209. re_common/vip/title/transform/TransformRegulationTitleToZt.py +114 -114
  210. re_common/vip/title/transform/TransformStandardTitleToZt.py +135 -135
  211. re_common/vip/title/transform/TransformThesisTitleToZt.py +135 -135
  212. re_common/vip/title/transform/__init__.py +10 -10
  213. {re_common-10.0.39.dist-info → re_common-10.0.40.dist-info}/LICENSE +201 -201
  214. {re_common-10.0.39.dist-info → re_common-10.0.40.dist-info}/METADATA +24 -16
  215. re_common-10.0.40.dist-info/RECORD +249 -0
  216. {re_common-10.0.39.dist-info → re_common-10.0.40.dist-info}/WHEEL +1 -1
  217. re_common-10.0.39.dist-info/RECORD +0 -248
  218. {re_common-10.0.39.dist-info → re_common-10.0.40.dist-info}/top_level.txt +0 -0
@@ -1,320 +1,320 @@
1
- import datetime
2
- import time
3
- from calendar import monthrange, Calendar
4
- # timedalte 是datetime中的一个对象,该对象表示两个时间的差值
5
- from datetime import timedelta
6
-
7
- # microseconds (毫秒) 1 second = 1000 milliseconds
8
- # milliseconds (微秒) 1 milliseconds = 1000 milliseconds
9
- """
10
- %Y 完整的年份
11
- %m 月份(01 - 12)
12
- %d 一个月中的第几天(01 - 31)
13
- %H 一天中的第几个小时(24小时制,00 - 23)
14
- %M 分钟数(00 - 59)
15
- %S 秒(01 - 61)
16
- %X 本地相应时间
17
- %x 本地相应日期
18
- %a 本地(locale)简化星期名称
19
- %A 本地完整星期名称
20
- %b 本地简化月份名称
21
- %B 本地完整月份名称
22
- %c 本地相应的日期和时间表示
23
- %I 第几个小时(12小时制,01 - 12)
24
- %j 一年中的第几天(001 - 366)
25
- %p 本地am或者pm的相应符
26
- %U 一年中的星期数。(00 - 53星期天是一个星期的开始。)
27
- %w 一个星期中的第几天(0 - 6,0是星期天)
28
- %W 和%U基本相同,不同的是%W以星期一为一个星期的开始
29
- %y 去掉世纪的年份(00 - 99)
30
- %Z 时区的名字(如果不存在为空字符)
31
- %% ‘%’字符
32
- """
33
-
34
- class BaseTime(object):
35
-
36
- def __init__(self):
37
- self.mcal = MCalendar()
38
-
39
- def str_to_timestamp(self, time_str, time_format="%Y-%m-%d %H:%M:%S.%f"):
40
- """
41
- 将字符串转换为时间戳
42
- :param time_str:
43
- :return:
44
- """
45
- timeArray = time.strptime(time_str, time_format)
46
- timeStamp = int(time.mktime(timeArray))
47
- return timeStamp
48
-
49
- def date_format(self, datestring, sourceformat='%b %d, %Y', tarformat="%Y%m%d"):
50
- """
51
- 特定字符串转时间 转 string
52
- MAY 24, 2017 ==》 20170524
53
- :param datestring: 时间字符串
54
- :param sourceformat: 源格式 源格式需要与传入的字符串格式一致
55
- :param tarformat: 目标格式
56
- :return: 一个目标格式的string
57
- """
58
- """
59
- MAY 24, 2017 ==》 20170524
60
- :param datestring:
61
- :return:
62
- """
63
- return datetime.datetime.strftime(datetime.datetime.strptime(datestring, sourceformat), tarformat)
64
-
65
- def get_now_datetime(self):
66
- """
67
- 获取现在的时间
68
- :return: {
69
- type: datetime.datetime
70
- cmd python: datetime.datetime(2019, 1, 28, 17, 19, 5, 614144)
71
- print Strings: 2019-01-28 17:15:47.671929
72
- }
73
- """
74
- return datetime.datetime.now()
75
-
76
- def string_to_datetime(self, str, format="%Y-%m-%d %H:%M:%S.%f") -> datetime.datetime:
77
- """
78
- string 转 datetime
79
- :param str: 2017-01-01 11:10:45.1234
80
- :param format: 格式 必须和str的格式相对相应
81
- :return:{
82
- type: datetime.datetime
83
- cmd python: datetime.datetime(2019, 1, 28, 17, 19, 5, 614144)
84
- print Strings: 2019-01-28 17:15:47.671929
85
- }
86
- """
87
- return datetime.datetime.strptime(str, format)
88
-
89
- def datetime_to_string(self, date, format="%Y.%m.%d"):
90
- """
91
- :param date: 输入类型 datetime.datetime
92
- :return: 2017.06.01
93
- """
94
- return date.strftime(format)
95
-
96
- def date_to_datetime(self, date):
97
- """
98
- 由于datetime与date不能直接比较 所以需要转换一下
99
- :return:
100
- """
101
- return datetime.datetime.combine(date, datetime.datetime.min.time())
102
-
103
- def get_diff(self, datetime):
104
- """
105
- 传入一个时间标准的str 求差秒
106
- :param datetime: {type: datetime.datetime}
107
- :return: string 秒
108
- """
109
- return (self.get_now_datetime() - self.string_to_datetime(datetime)).seconds
110
-
111
- def get_time(self):
112
- """
113
- 返回当前时间的时间戳
114
- 1546914500.7278442
115
- :return:
116
- """
117
- return time.time()
118
-
119
- def get_weeks_after(self, mdatetime, weeks):
120
- """
121
-
122
- :param days:
123
- :return: datetime
124
- """
125
- return mdatetime + datetime.timedelta(weeks=weeks)
126
-
127
- def get_weeks_before(self, mdatetime, weeks):
128
- """
129
-
130
- :param days:
131
- :return: datetime
132
- """
133
- return mdatetime - datetime.timedelta(weeks=weeks)
134
-
135
- def get_day_after(self, mdatetime, days):
136
- """
137
- 获取几天前的时间 并获取strings 可指定时间格式
138
- :param days:
139
- :return: datetime
140
- """
141
- return mdatetime + datetime.timedelta(days=days)
142
-
143
- def get_day_before(self, mdatetime, days):
144
- """
145
- 获取几天前的时间 并获取strings 可指定时间格式
146
- :param days:
147
- :return: datetime
148
- """
149
- return mdatetime - datetime.timedelta(days=days)
150
-
151
- def get_hours_after(self, mdatetime, hours):
152
- """
153
- 小时
154
- :param days:
155
- :return: datetime
156
- """
157
- return mdatetime + datetime.timedelta(hours=hours)
158
-
159
- def get_hours_before(self, mdatetime, hours):
160
- """
161
- 小时
162
- :param days:
163
- :return: datetime
164
- """
165
- return mdatetime - datetime.timedelta(hours=hours)
166
-
167
- def get_minutes_after(self, mdatetime, minutes):
168
- """
169
-
170
- :param mdatetime: datetime
171
- :param minutes: float
172
- :return: datetime
173
- """
174
- return mdatetime + datetime.timedelta(minutes=minutes)
175
-
176
- def get_minutes_before(self, mdatetime, minutes):
177
- """
178
-
179
- :param days:
180
- :return: datetime
181
- """
182
- return mdatetime - datetime.timedelta(minutes=minutes)
183
-
184
- def get_seconds_after(self, mdatetime, seconds):
185
- """
186
-
187
- :param days:
188
- :return: datetime
189
- """
190
- return mdatetime + datetime.timedelta(seconds=seconds)
191
-
192
- def get_seconds_before(self, mdatetime, seconds):
193
- """
194
-
195
- :param days:
196
- :return: datetime
197
- """
198
- return mdatetime - datetime.timedelta(seconds=seconds)
199
-
200
- def get_milliseconds_after(self, mdatetime, milliseconds):
201
- """
202
- 毫秒
203
- :param days:
204
- :return: datetime
205
- """
206
- return mdatetime + datetime.timedelta(milliseconds=milliseconds)
207
-
208
- def get_milliseconds_before(self, mdatetime, milliseconds):
209
- """
210
- 毫秒
211
- :param days:
212
- :return: datetime
213
- """
214
- return mdatetime - datetime.timedelta(milliseconds=milliseconds)
215
-
216
- def get_microseconds_after(self, mdatetime, microseconds):
217
- """
218
- 微秒
219
- :param days:
220
- :return: datetime
221
- """
222
- return mdatetime + datetime.timedelta(microseconds=microseconds)
223
-
224
- def get_microseconds_before(self, mdatetime, microseconds):
225
- """
226
- 微秒
227
- :param days:
228
- :return: datetime
229
- """
230
- return mdatetime - datetime.timedelta(microseconds=microseconds)
231
-
232
- def get_next_month(self, mdatetime, day=1):
233
- """
234
- 获取下一月某一天
235
- :param datestring: 输入格式 20170524
236
- :return: 返回类型 datetime.datetime 格式 2019-01-01 00:00:00
237
- """
238
- return (mdatetime.replace(day=1) + datetime.timedelta(33)).replace(day=day)
239
-
240
- def get_befor_month(self, mdatetime, day=1):
241
- """
242
- 获取前一月的某一天
243
- :param datestring: 输入格式 20170524
244
- :return: 返回类型 datetime.datetime 格式 2019-01-01 00:00:00
245
- """
246
- return (mdatetime.replace(day=1) - datetime.timedelta(10)).replace(day=day)
247
-
248
- def get_today_date_strings(self):
249
- """
250
- 获取当前日期级时间字符串
251
- 如 20180810
252
- :return: string
253
- """
254
- return self.datetime_to_string(self.get_now_datetime(), '%Y%m%d')
255
-
256
- def get_beijin_date_strins(self, format="%Y%m%d%H%M%S"):
257
- """
258
- 获取北京时间string
259
- :return:
260
- """
261
- update_time = self.datetime_to_string(
262
- datetime.datetime.utcnow() + datetime.timedelta(hours=8), format)
263
- return update_time
264
-
265
- def get_moths_day(self):
266
- pass
267
-
268
-
269
- class MCalendar(object):
270
- def __init__(self):
271
- self.c = Calendar()
272
-
273
- def monthrange(self, year: int, moths: int):
274
- """
275
- 获取一个月的迭代
276
- :return: tuple (0,31)
277
- """
278
- return monthrange(year, moths)
279
-
280
- def itermonthdates(self, year: int, moths: int):
281
- """
282
- 可以迭代某個月,但前后会有其他月份的日期
283
- :param year:
284
- :param moths:
285
- :return: generator object Calendar.itermonthdates 返回一個生成器
286
- """
287
- return self.c.itermonthdates(year, moths)
288
-
289
- def date_iter(self, year, month):
290
- """
291
- 返回某个月的所有天
292
- for d in date_iter(2019, 12):
293
- print(d)
294
- :param year:
295
- :param month:
296
- :return:
297
- """
298
- for i in range(1, monthrange(year, month)[1] + 1):
299
- yield datetime.date(year, month, i)
300
-
301
- def get_days(self, startdays: str, enddays: str):
302
- """
303
- 返回开始到结束的所有天
304
- :param startdays: 20180101
305
- :param enddays: 20190101
306
- :return:
307
- """
308
- start_year = startdays[:4]
309
- start_month = startdays[4:6]
310
- start_days = startdays[6:]
311
- end_year = enddays[:4]
312
- end_month = enddays[4:6]
313
- end_days = enddays[6:]
314
-
315
- for year in range(int(start_year), int(end_year) + 1):
316
- for month in range(int(start_month), 13):
317
- start_month = 1
318
- for days in self.date_iter(int(year), int(month)):
319
- if startdays <= str(days).replace("-", "") <= enddays:
320
- yield days
1
+ import datetime
2
+ import time
3
+ from calendar import monthrange, Calendar
4
+ # timedalte 是datetime中的一个对象,该对象表示两个时间的差值
5
+ from datetime import timedelta
6
+
7
+ # microseconds (毫秒) 1 second = 1000 milliseconds
8
+ # milliseconds (微秒) 1 milliseconds = 1000 milliseconds
9
+ """
10
+ %Y 完整的年份
11
+ %m 月份(01 - 12)
12
+ %d 一个月中的第几天(01 - 31)
13
+ %H 一天中的第几个小时(24小时制,00 - 23)
14
+ %M 分钟数(00 - 59)
15
+ %S 秒(01 - 61)
16
+ %X 本地相应时间
17
+ %x 本地相应日期
18
+ %a 本地(locale)简化星期名称
19
+ %A 本地完整星期名称
20
+ %b 本地简化月份名称
21
+ %B 本地完整月份名称
22
+ %c 本地相应的日期和时间表示
23
+ %I 第几个小时(12小时制,01 - 12)
24
+ %j 一年中的第几天(001 - 366)
25
+ %p 本地am或者pm的相应符
26
+ %U 一年中的星期数。(00 - 53星期天是一个星期的开始。)
27
+ %w 一个星期中的第几天(0 - 6,0是星期天)
28
+ %W 和%U基本相同,不同的是%W以星期一为一个星期的开始
29
+ %y 去掉世纪的年份(00 - 99)
30
+ %Z 时区的名字(如果不存在为空字符)
31
+ %% ‘%’字符
32
+ """
33
+
34
+ class BaseTime(object):
35
+
36
+ def __init__(self):
37
+ self.mcal = MCalendar()
38
+
39
+ def str_to_timestamp(self, time_str, time_format="%Y-%m-%d %H:%M:%S.%f"):
40
+ """
41
+ 将字符串转换为时间戳
42
+ :param time_str:
43
+ :return:
44
+ """
45
+ timeArray = time.strptime(time_str, time_format)
46
+ timeStamp = int(time.mktime(timeArray))
47
+ return timeStamp
48
+
49
+ def date_format(self, datestring, sourceformat='%b %d, %Y', tarformat="%Y%m%d"):
50
+ """
51
+ 特定字符串转时间 转 string
52
+ MAY 24, 2017 ==》 20170524
53
+ :param datestring: 时间字符串
54
+ :param sourceformat: 源格式 源格式需要与传入的字符串格式一致
55
+ :param tarformat: 目标格式
56
+ :return: 一个目标格式的string
57
+ """
58
+ """
59
+ MAY 24, 2017 ==》 20170524
60
+ :param datestring:
61
+ :return:
62
+ """
63
+ return datetime.datetime.strftime(datetime.datetime.strptime(datestring, sourceformat), tarformat)
64
+
65
+ def get_now_datetime(self):
66
+ """
67
+ 获取现在的时间
68
+ :return: {
69
+ type: datetime.datetime
70
+ cmd python: datetime.datetime(2019, 1, 28, 17, 19, 5, 614144)
71
+ print Strings: 2019-01-28 17:15:47.671929
72
+ }
73
+ """
74
+ return datetime.datetime.now()
75
+
76
+ def string_to_datetime(self, str, format="%Y-%m-%d %H:%M:%S.%f") -> datetime.datetime:
77
+ """
78
+ string 转 datetime
79
+ :param str: 2017-01-01 11:10:45.1234
80
+ :param format: 格式 必须和str的格式相对相应
81
+ :return:{
82
+ type: datetime.datetime
83
+ cmd python: datetime.datetime(2019, 1, 28, 17, 19, 5, 614144)
84
+ print Strings: 2019-01-28 17:15:47.671929
85
+ }
86
+ """
87
+ return datetime.datetime.strptime(str, format)
88
+
89
+ def datetime_to_string(self, date, format="%Y.%m.%d"):
90
+ """
91
+ :param date: 输入类型 datetime.datetime
92
+ :return: 2017.06.01
93
+ """
94
+ return date.strftime(format)
95
+
96
+ def date_to_datetime(self, date):
97
+ """
98
+ 由于datetime与date不能直接比较 所以需要转换一下
99
+ :return:
100
+ """
101
+ return datetime.datetime.combine(date, datetime.datetime.min.time())
102
+
103
+ def get_diff(self, datetime):
104
+ """
105
+ 传入一个时间标准的str 求差秒
106
+ :param datetime: {type: datetime.datetime}
107
+ :return: string 秒
108
+ """
109
+ return (self.get_now_datetime() - self.string_to_datetime(datetime)).seconds
110
+
111
+ def get_time(self):
112
+ """
113
+ 返回当前时间的时间戳
114
+ 1546914500.7278442
115
+ :return:
116
+ """
117
+ return time.time()
118
+
119
+ def get_weeks_after(self, mdatetime, weeks):
120
+ """
121
+
122
+ :param days:
123
+ :return: datetime
124
+ """
125
+ return mdatetime + datetime.timedelta(weeks=weeks)
126
+
127
+ def get_weeks_before(self, mdatetime, weeks):
128
+ """
129
+
130
+ :param days:
131
+ :return: datetime
132
+ """
133
+ return mdatetime - datetime.timedelta(weeks=weeks)
134
+
135
+ def get_day_after(self, mdatetime, days):
136
+ """
137
+ 获取几天前的时间 并获取strings 可指定时间格式
138
+ :param days:
139
+ :return: datetime
140
+ """
141
+ return mdatetime + datetime.timedelta(days=days)
142
+
143
+ def get_day_before(self, mdatetime, days):
144
+ """
145
+ 获取几天前的时间 并获取strings 可指定时间格式
146
+ :param days:
147
+ :return: datetime
148
+ """
149
+ return mdatetime - datetime.timedelta(days=days)
150
+
151
+ def get_hours_after(self, mdatetime, hours):
152
+ """
153
+ 小时
154
+ :param days:
155
+ :return: datetime
156
+ """
157
+ return mdatetime + datetime.timedelta(hours=hours)
158
+
159
+ def get_hours_before(self, mdatetime, hours):
160
+ """
161
+ 小时
162
+ :param days:
163
+ :return: datetime
164
+ """
165
+ return mdatetime - datetime.timedelta(hours=hours)
166
+
167
+ def get_minutes_after(self, mdatetime, minutes):
168
+ """
169
+
170
+ :param mdatetime: datetime
171
+ :param minutes: float
172
+ :return: datetime
173
+ """
174
+ return mdatetime + datetime.timedelta(minutes=minutes)
175
+
176
+ def get_minutes_before(self, mdatetime, minutes):
177
+ """
178
+
179
+ :param days:
180
+ :return: datetime
181
+ """
182
+ return mdatetime - datetime.timedelta(minutes=minutes)
183
+
184
+ def get_seconds_after(self, mdatetime, seconds):
185
+ """
186
+
187
+ :param days:
188
+ :return: datetime
189
+ """
190
+ return mdatetime + datetime.timedelta(seconds=seconds)
191
+
192
+ def get_seconds_before(self, mdatetime, seconds):
193
+ """
194
+
195
+ :param days:
196
+ :return: datetime
197
+ """
198
+ return mdatetime - datetime.timedelta(seconds=seconds)
199
+
200
+ def get_milliseconds_after(self, mdatetime, milliseconds):
201
+ """
202
+ 毫秒
203
+ :param days:
204
+ :return: datetime
205
+ """
206
+ return mdatetime + datetime.timedelta(milliseconds=milliseconds)
207
+
208
+ def get_milliseconds_before(self, mdatetime, milliseconds):
209
+ """
210
+ 毫秒
211
+ :param days:
212
+ :return: datetime
213
+ """
214
+ return mdatetime - datetime.timedelta(milliseconds=milliseconds)
215
+
216
+ def get_microseconds_after(self, mdatetime, microseconds):
217
+ """
218
+ 微秒
219
+ :param days:
220
+ :return: datetime
221
+ """
222
+ return mdatetime + datetime.timedelta(microseconds=microseconds)
223
+
224
+ def get_microseconds_before(self, mdatetime, microseconds):
225
+ """
226
+ 微秒
227
+ :param days:
228
+ :return: datetime
229
+ """
230
+ return mdatetime - datetime.timedelta(microseconds=microseconds)
231
+
232
+ def get_next_month(self, mdatetime, day=1):
233
+ """
234
+ 获取下一月某一天
235
+ :param datestring: 输入格式 20170524
236
+ :return: 返回类型 datetime.datetime 格式 2019-01-01 00:00:00
237
+ """
238
+ return (mdatetime.replace(day=1) + datetime.timedelta(33)).replace(day=day)
239
+
240
+ def get_befor_month(self, mdatetime, day=1):
241
+ """
242
+ 获取前一月的某一天
243
+ :param datestring: 输入格式 20170524
244
+ :return: 返回类型 datetime.datetime 格式 2019-01-01 00:00:00
245
+ """
246
+ return (mdatetime.replace(day=1) - datetime.timedelta(10)).replace(day=day)
247
+
248
+ def get_today_date_strings(self):
249
+ """
250
+ 获取当前日期级时间字符串
251
+ 如 20180810
252
+ :return: string
253
+ """
254
+ return self.datetime_to_string(self.get_now_datetime(), '%Y%m%d')
255
+
256
+ def get_beijin_date_strins(self, format="%Y%m%d%H%M%S"):
257
+ """
258
+ 获取北京时间string
259
+ :return:
260
+ """
261
+ update_time = self.datetime_to_string(
262
+ datetime.datetime.utcnow() + datetime.timedelta(hours=8), format)
263
+ return update_time
264
+
265
+ def get_moths_day(self):
266
+ pass
267
+
268
+
269
+ class MCalendar(object):
270
+ def __init__(self):
271
+ self.c = Calendar()
272
+
273
+ def monthrange(self, year: int, moths: int):
274
+ """
275
+ 获取一个月的迭代
276
+ :return: tuple (0,31)
277
+ """
278
+ return monthrange(year, moths)
279
+
280
+ def itermonthdates(self, year: int, moths: int):
281
+ """
282
+ 可以迭代某個月,但前后会有其他月份的日期
283
+ :param year:
284
+ :param moths:
285
+ :return: generator object Calendar.itermonthdates 返回一個生成器
286
+ """
287
+ return self.c.itermonthdates(year, moths)
288
+
289
+ def date_iter(self, year, month):
290
+ """
291
+ 返回某个月的所有天
292
+ for d in date_iter(2019, 12):
293
+ print(d)
294
+ :param year:
295
+ :param month:
296
+ :return:
297
+ """
298
+ for i in range(1, monthrange(year, month)[1] + 1):
299
+ yield datetime.date(year, month, i)
300
+
301
+ def get_days(self, startdays: str, enddays: str):
302
+ """
303
+ 返回开始到结束的所有天
304
+ :param startdays: 20180101
305
+ :param enddays: 20190101
306
+ :return:
307
+ """
308
+ start_year = startdays[:4]
309
+ start_month = startdays[4:6]
310
+ start_days = startdays[6:]
311
+ end_year = enddays[:4]
312
+ end_month = enddays[4:6]
313
+ end_days = enddays[6:]
314
+
315
+ for year in range(int(start_year), int(end_year) + 1):
316
+ for month in range(int(start_month), 13):
317
+ start_month = 1
318
+ for days in self.date_iter(int(year), int(month)):
319
+ if startdays <= str(days).replace("-", "") <= enddays:
320
+ yield days