通过Java日期时间API系列6-----Jdk8中java.time包中的新的日期时间API类中时间范围示意图:可以很清晰的看出ZonedDateTime相当于LocalDateTime+ZoneId。

  

  ZonedDateTime是用来处理时区相关的时间,它的各种计算都离不开ZoneId。先看ZoneId。

1. ZoneId 为时区ID,比如Europe/Paris,表示欧洲巴黎时区

1.1 时区相关知识,时区,UTC时间,GMT时间,Unix时间戳

时区

地球自西向东旋转,东边比西边先看到太阳,东边的时间也比西边的早。为了统一世界的时间,1884年的国际经度会议规规定将全球划分为24个时区(东、西各12个时区)。规定英国(格林尼治天文台旧址)为零时区(GMT+00),东1-12区,西1-12区,中国北京处于东8区(GMT+08)。

若英国时间为6点整,则GMT时间为6点整,则北京时间为14点整。

GMT和UTC

GMT,即格林尼治标准时间,也就是世界时。GMT的正午是指当太阳横穿格林尼治子午线(本初子午线)时的时间。但由于地球自转不均匀不规则,导致GMT不精确,现在已经不再作为世界标准时间使用。

UTC,即协调世界时。UTC是以原子时秒长为基础,在时刻上尽量接近于GMT的一种时间计量系统。为确保UTC与GMT相差不会超过0.9秒,在有需要的情况下会在UTC内加上正或负闰秒。UTC现在作为世界标准时间使用。

所以,UTC与GMT基本上等同,误差不超过0.9秒。

UNIX时间戳

计算机中的UNIX时间戳,是以GMT/UTC时间「1970-01-01T00:00:00」为起点,到具体时间的秒数,不考虑闰秒。这么做当然是为了简化计算机对时间操作的复杂度。

比如我的电脑现在的系统时间为2015年2月27日15点43分0秒,因为我的电脑默认时区为东8区,则0时区的时间为2015年2月27日7点43分0秒,则UNIX时间戳为1425022980秒。

1.2  常用时区名称和缩写如下:

  1. package com.xkzhangsan.time.enums;
  2.  
  3. /**
  4. * 常用时区枚举 包含中文名称,比如:"Asia/Shanghai","亚洲/上海"
  5. *
  6. * @ClassName: ZoneIdEnum
  7. * @Description: ZoneIdEnum
  8. * @author xkzhangsan
  9. * @date 2020年02月18日
  10. * @version 0.1 ,初版,试用
  11. */
  12. public enum ZoneIdEnum {
  13.  
  14. /**
  15. * "Australia/Darwin","澳洲/达尔文"
  16. */
  17. ACT("Australia/Darwin", "澳洲/达尔文"),
  18.  
  19. /**
  20. * "Australia/Sydney","澳洲/悉尼"
  21. */
  22. AET("Australia/Sydney", "澳洲/悉尼"),
  23.  
  24. /**
  25. * "America/Argentina/Buenos_Aires","美洲/阿根廷/布宜诺斯艾利斯"
  26. */
  27. AGT("America/Argentina/Buenos_Aires", "美洲/阿根廷/布宜诺斯艾利斯"),
  28.  
  29. /**
  30. * "Africa/Cairo","非洲/开罗"
  31. */
  32. ART("Africa/Cairo", "非洲/开罗"),
  33.  
  34. /**
  35. * "America/Anchorage","美洲/安克雷奇"
  36. */
  37. AST("America/Anchorage", "美洲/安克雷奇"),
  38.  
  39. /**
  40. * "America/Sao_Paulo","美洲/圣保罗"
  41. */
  42. BET("America/Sao_Paulo", "美洲/圣保罗"),
  43.  
  44. /**
  45. * "Asia/Dhaka","亚洲/达卡"
  46. */
  47. BST("Asia/Dhaka", "亚洲/达卡"),
  48.  
  49. /**
  50. * "Africa/Harare","非洲/哈拉雷"
  51. */
  52. CAT("Africa/Harare", "非洲/哈拉雷"),
  53.  
  54. /**
  55. * "America/St_Johns","美洲/圣约翰"
  56. */
  57. CNT("America/St_Johns", "美洲/圣约翰"),
  58.  
  59. /**
  60. * "America/Chicago","美洲/芝加哥"
  61. */
  62. CST("America/Chicago", "美洲/芝加哥"),
  63.  
  64. /**
  65. * "Asia/Shanghai","亚洲/上海"
  66. */
  67. CTT("Asia/Shanghai", "亚洲/上海"),
  68.  
  69. /**
  70. * "Africa/Addis_Ababa","非洲/亚的斯亚贝巴"
  71. */
  72. EAT("Africa/Addis_Ababa", "非洲/亚的斯亚贝巴"),
  73.  
  74. /**
  75. * "Europe/Paris","欧洲/巴黎"
  76. */
  77. ECT("Europe/Paris", "欧洲/巴黎"),
  78.  
  79. /**
  80. * "America/Indiana/Indianapolis","美洲/印第安纳州/印第安纳波利斯"
  81. */
  82. IET("America/Indiana/Indianapolis", "美洲/印第安纳州/印第安纳波利斯"),
  83.  
  84. /**
  85. * "Asia/Kolkata","亚洲/加尔各答"
  86. */
  87. IST("Asia/Kolkata", "亚洲/加尔各答"),
  88.  
  89. /**
  90. * "Asia/Tokyo","亚洲/东京"
  91. */
  92. JST("Asia/Tokyo", "亚洲/东京"),
  93.  
  94. /**
  95. * "Pacific/Apia","太平洋/阿皮亚"
  96. */
  97. MIT("Pacific/Apia", "太平洋/阿皮亚"),
  98.  
  99. /**
  100. * "Asia/Yerevan","亚洲/埃里温"
  101. */
  102. NET("Asia/Yerevan", "亚洲/埃里温"),
  103.  
  104. /**
  105. * "Pacific/Auckland","太平洋/奥克兰"
  106. */
  107. NST("Pacific/Auckland", "太平洋/奥克兰"),
  108.  
  109. /**
  110. * "Asia/Karachi","亚洲/卡拉奇"
  111. */
  112. PLT("Asia/Karachi", "亚洲/卡拉奇"),
  113.  
  114. /**
  115. * "America/Phoenix","美洲/凤凰城"
  116. */
  117. PNT("America/Phoenix", "美洲/凤凰城"),
  118.  
  119. /**
  120. * "America/Puerto_Rico","美洲/波多黎各"
  121. */
  122. PRT("America/Puerto_Rico", "美洲/波多黎各"),
  123.  
  124. /**
  125. * "America/Los_Angeles","美洲/洛杉矶"
  126. */
  127. PST("America/Los_Angeles", "美洲/洛杉矶"),
  128.  
  129. /**
  130. * "Pacific/Guadalcanal","太平洋/瓜达尔卡纳尔岛"
  131. */
  132. SST("Pacific/Guadalcanal", "太平洋/瓜达尔卡纳尔岛"),
  133.  
  134. /**
  135. * "Asia/Ho_Chi_Minh","亚洲/胡志明市"
  136. */
  137. VST("Asia/Ho_Chi_Minh", "亚洲/胡志明市"),
  138.  
  139. /**
  140. * "-05:00","东部标准时间"(纽约、华盛顿)
  141. */
  142. EST("-05:00", "东部标准时间"),
  143.  
  144. /**
  145. * "-07:00","山地标准时间"
  146. */
  147. MST("-07:00", "山地标准时间"),
  148.  
  149. /**
  150. * "-10:00","夏威夷-阿留申标准时区"
  151. */
  152. HST("-10:00", "夏威夷-阿留申标准时区"),;
  153.  
  154. private final String zoneIdName;
  155. private final String zoneIdNameCn;
  156.  
  157. public String getZoneIdName() {
  158. return zoneIdName;
  159. }
  160.  
  161. public String getZoneIdNameCn() {
  162. return zoneIdNameCn;
  163. }
  164.  
  165. private ZoneIdEnum(String zoneIdName, String zoneIdNameCn) {
  166. this.zoneIdName = zoneIdName;
  167. this.zoneIdNameCn = zoneIdNameCn;
  168. }
  169. }

1.3  更多时区id

  可以通过 java.time.ZoneId.getAvailableZoneIds()获取到。

2. ZonedDateTime,ISO-8601日历系统中带有时区的日期时间,例如:2007-12-03T10:15:30+01:00 Europe/Paris

2.1 创建ZonedDateTime

  1. ZonedDateTime.now();
  2.  
  3. ZonedDateTime.now(ZoneId.systemDefault());
  4.  
  5. ZonedDateTime.of(LocalDateTime.now(), ZoneId.systemDefault());

2.2 ZonedDateTime与其他时间类的转换

  1. /**
  2. * 注意时间对应的时区和默认时区差异
  3. * @param zonedDateTime
  4. * @return
  5. */
  6. public static Date toDate(ZonedDateTime zonedDateTime) {
  7. Objects.requireNonNull(zonedDateTime, "zonedDateTime");
  8. return Date.from(zonedDateTime.toInstant());
  9. }
  10.  
  11. /**
  12. * 注意时间对应的时区和默认时区差异
  13. * @param zonedDateTime
  14. * @return
  15. */
  16. public static LocalDateTime toLocalDateTime(ZonedDateTime zonedDateTime) {
  17. Objects.requireNonNull(zonedDateTime, "zonedDateTime");
  18. return zonedDateTime.toLocalDateTime();
  19. }
  20.  
  21. /**
  22. * 注意时间对应的时区和默认时区差异
  23. * @param zonedDateTime
  24. * @return
  25. */
  26. public static LocalDate toLocalDate(ZonedDateTime zonedDateTime) {
  27. Objects.requireNonNull(zonedDateTime, "zonedDateTime");
  28. return zonedDateTime.toLocalDate();
  29. }
  30.  
  31. /**
  32. * 注意时间对应的时区和默认时区差异
  33. * @param zonedDateTime
  34. * @return
  35. */
  36. public static LocalTime toLocalTime(ZonedDateTime zonedDateTime) {
  37. Objects.requireNonNull(zonedDateTime, "zonedDateTime");
  38. return zonedDateTime.toLocalTime();
  39. }
  40.  
  41. /**
  42. * 注意时间对应的时区和默认时区差异
  43. * @param zonedDateTime
  44. * @return
  45. */
  46. public static Instant toInstant(ZonedDateTime zonedDateTime) {
  47. Objects.requireNonNull(zonedDateTime, "zonedDateTime");
  48. return zonedDateTime.toInstant();
  49. }
  50.  
  51. /**
  52. * 转换为ZonedDateTime,时区为系统默认时区
  53. * @param date
  54. * @return
  55. */
  56. public static ZonedDateTime toZonedDateTime(Date date) {
  57. Objects.requireNonNull(date, "date");
  58. return Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDateTime()
  59. .atZone(ZoneId.systemDefault());
  60. }
  61.  
  62. /**
  63. * 转换为ZonedDateTime,时区为系统默认时区
  64. * @param localDateTime
  65. * @return
  66. */
  67. public static ZonedDateTime toZonedDateTime(LocalDateTime localDateTime) {
  68. Objects.requireNonNull(localDateTime, "localDateTime");
  69. return localDateTime.atZone(ZoneId.systemDefault());
  70. }
  71. /**
  72. * LocalDateTime转ZonedDateTime,时区为zoneId对应时区
  73. * 注意,需要保证localDateTime和zoneId是对应的,不然会出现错误
  74. *
  75. * @param localDateTime
  76. * @param zoneId
  77. * @return
  78. */
  79. public static ZonedDateTime toZonedDateTime(LocalDateTime localDateTime, String zoneId) {
  80. Objects.requireNonNull(localDateTime, "localDateTime");
  81. Objects.requireNonNull(zoneId, "zoneId");
  82. return localDateTime.atZone(ZoneId.of(zoneId));
  83. }
  84. /**
  85. * 转换为ZonedDateTime,时区为系统默认时区
  86. * @param localDate
  87. * @return
  88. */
  89. public static ZonedDateTime toZonedDateTime(LocalDate localDate) {
  90. Objects.requireNonNull(localDate, "localDate");
  91. return localDate.atStartOfDay().atZone(ZoneId.systemDefault());
  92. }
  93.  
  94. /**
  95. * 以当天的日期+LocalTime组成新的ZonedDateTime,时区为系统默认时区
  96. * @param localTime
  97. * @return
  98. */
  99. public static ZonedDateTime toZonedDateTime(LocalTime localTime) {
  100. Objects.requireNonNull(localTime, "localTime");
  101. return LocalDate.now().atTime(localTime).atZone(ZoneId.systemDefault());
  102. }
  103.  
  104. /**
  105. * 转换为ZonedDateTime,时区为系统默认时区
  106. * @param instant
  107. * @return
  108. */
  109. public static ZonedDateTime toZonedDateTime(Instant instant) {
  110. return LocalDateTime.ofInstant(instant, ZoneId.systemDefault()).atZone(ZoneId.systemDefault());
  111. }

===================================================================================

测试代码:

  1. @Test
  2. public void zonedDateTimeConverterTest(){
  3. System.out.println("===================zonedDateTimeConverterTest=====================");
  4. System.out.println("===================ToOther=====================");
  5. ZonedDateTime zonedDateTime = ZonedDateTime.now();
  6. System.out.println(zonedDateTime);
  7. System.out.println(DateTimeConverterUtil.toDate(zonedDateTime));
  8. System.out.println(DateTimeConverterUtil.toLocalDateTime(zonedDateTime));
  9. System.out.println(DateTimeConverterUtil.toLocalDate(zonedDateTime));
  10. System.out.println(DateTimeConverterUtil.toLocalTime(zonedDateTime));
  11. System.out.println(DateTimeConverterUtil.toInstant(zonedDateTime));
  12. System.out.println("===================toZonedDateTime=====================");
  13. System.out.println(zonedDateTime);
  14. System.out.println(DateTimeConverterUtil.toZonedDateTime(new Date()));
  15. System.out.println(DateTimeConverterUtil.toZonedDateTime(LocalDateTime.now()));
  16. System.out.println(DateTimeConverterUtil.toZonedDateTime(LocalDate.now()));
  17. System.out.println(DateTimeConverterUtil.toZonedDateTime(LocalTime.now()));
  18. System.out.println(DateTimeConverterUtil.toZonedDateTime(Instant.now()));
  19. }

输出:

  1. ===================zonedDateTimeConverterTest=====================
  2. ===================ToOther=====================
  3. 2020-02-19T13:33:03.130+08:00[Asia/Shanghai]
  4. Wed Feb 19 13:33:03 CST 2020
  5. 2020-02-19T13:33:03.130
  6. 2020-02-19
  7. 13:33:03.130
  8. 2020-02-19T05:33:03.130Z
  9. ===================toZonedDateTime=====================
  10. 2020-02-19T13:33:03.130+08:00[Asia/Shanghai]
  11. 2020-02-19T13:33:03.150+08:00[Asia/Shanghai]
  12. 2020-02-19T13:33:03.150+08:00[Asia/Shanghai]
  13. 2020-02-19T00:00+08:00[Asia/Shanghai]
  14. 2020-02-19T13:33:03.150+08:00[Asia/Shanghai]
  15. 2020-02-19T13:33:03.150+08:00[Asia/Shanghai]

由于  public static ZonedDateTime toZonedDateTime(LocalDate localDate),LocalDate只包含日期,所以,转换后显示为:2020-02-19T00:00+08:00[Asia/Shanghai]

2.3 常用时区时间创建和时区转换计算

常用时间,如北京时间,巴黎时间,纽约时间,东京时间等。

  1. /**
  2. * 获取当前系统当前时区时间
  3. * @param zoneId
  4. * @return
  5. */
  6. public static ZonedDateTime getZonedDateTimeNowOfDefault(){
  7. return ZonedDateTime.now(ZoneId.systemDefault());
  8. }
  9.  
  10. /**
  11. * 获取当前上海时区时间(北京时间)
  12. * @param zoneId
  13. * @return
  14. */
  15. public static ZonedDateTime getZonedDateTimeNowOfShanghai(){
  16. return ZonedDateTime.now(ZoneId.of(ZoneIdEnum.CTT.getZoneIdName()));
  17. }
  18.  
  19. /**
  20. * 获取当前巴黎时区时间
  21. * @param zoneId
  22. * @return
  23. */
  24. public static ZonedDateTime getZonedDateTimeNowOfParis(){
  25. return ZonedDateTime.now(ZoneId.of(ZoneIdEnum.ECT.getZoneIdName()));
  26. }
  27.  
  28. /**
  29. * 获取当前美国东部标准时区(纽约、华盛顿)
  30. * @param zoneId
  31. * @return
  32. */
  33. public static ZonedDateTime getZonedDateTimeNowOfEST(){
  34. return ZonedDateTime.now(ZoneId.of(ZoneIdEnum.EST.getZoneIdName()));
  35. }
  36.  
  37. /**
  38. * 获取当前东京时区时间
  39. * @param zoneId
  40. * @return
  41. */
  42. public static ZonedDateTime getZonedDateTimeNowOfTokyo(){
  43. return ZonedDateTime.now(ZoneId.of(ZoneIdEnum.JST.getZoneIdName()));
  44. }
  45.  
  46. /**
  47. * 获取时区当前时间
  48. * @param zoneId
  49. * @return
  50. */
  51. public static ZonedDateTime getZonedDateTimeNow(String zoneId){
  52. Objects.requireNonNull(zoneId, "zoneId");
  53. return ZonedDateTime.now(ZoneId.of(zoneId));
  54. }
  55.  
  56. /**
  57. * 时区转换计算
  58. * @param zonedDateTime
  59. * @param zoneId 例如 Asia/Shanghai
  60. * @return
  61. */
  62. public static ZonedDateTime transform(ZonedDateTime zonedDateTime, String zoneId){
  63. Objects.requireNonNull(zoneId, "zoneId");
  64. return transform(zonedDateTime, ZoneId.of(zoneId));
  65. }
  66.  
  67. /**
  68. * 时区转换计算
  69. * @param zonedDateTime
  70. * @param zone
  71. * @return
  72. */
  73. public static ZonedDateTime transform(ZonedDateTime zonedDateTime, ZoneId zone){
  74. Objects.requireNonNull(zonedDateTime, "zonedDateTime");
  75. Objects.requireNonNull(zone, "zone");
  76. return zonedDateTime.withZoneSameInstant(zone);
  77. }

测试代码:

  1. /**
  2. * 时区时间计算
  3. */
  4. @Test
  5. public void zonedDateTimeTest(){
  6. //系统默认时区
  7. System.out.println(DateTimeCalculatorUtil.getZonedDateTimeNowOfDefault());
  8. //系统上海时区
  9. ZonedDateTime shanghaiZonedDateTime = DateTimeCalculatorUtil.getZonedDateTimeNowOfShanghai();
  10. System.out.println(shanghaiZonedDateTime);
  11. //系统巴黎时区
  12. ZonedDateTime parisZonedDateTime = DateTimeCalculatorUtil.getZonedDateTimeNowOfParis();
  13. System.out.println(parisZonedDateTime);
  14. //系统美国东部时区纽约时间
  15. System.out.println(DateTimeCalculatorUtil.getZonedDateTimeNowOfEST());
  16. //系统东京时区
  17. System.out.println(DateTimeCalculatorUtil.getZonedDateTimeNowOfTokyo());
  18.  
  19. //上海时区,转换为巴黎时区
  20. System.out.println("============transform 时区转换=============");
  21. System.out.println("shanghaiZonedDateTime: "+shanghaiZonedDateTime);
  22. ZonedDateTime transformZonedDateTime = DateTimeCalculatorUtil.transform(shanghaiZonedDateTime,
  23. ZoneIdEnum.ECT.getZoneIdName());
  24. System.out.println("transformZonedDateTime: "+transformZonedDateTime);
  25.  
  26. }

输出:

  1. 2020-02-19T13:40:49.638+08:00[Asia/Shanghai]
  2. 2020-02-19T13:40:49.640+08:00[Asia/Shanghai]
  3. 2020-02-19T06:40:49.642+01:00[Europe/Paris]
  4. 2020-02-19T00:40:49.653-05:00
  5. 2020-02-19T14:40:49.653+09:00[Asia/Tokyo]
  6. ============transform 时区转换=============
  7. shanghaiZonedDateTime: 2020-02-19T13:40:49.640+08:00[Asia/Shanghai]
  8. transformZonedDateTime: 2020-02-19T06:40:49.640+01:00[Europe/Paris]

2.4 时区时间格式化与解析

(1)时区时间格式化和ISO常用格式化,比如:yyyy-MM-dd'T'HH:mm:ssZ

  1. /**
  2. * 时区时间格式化和ISO常用格式化
  3. * YYYY_MM_DD_T_HH_MM_SS_Z = "yyyy-MM-dd'T'HH:mm:ssZ"
  4. */
  5. @Test
  6. public void zonedDateTimeFormatTest(){
  7. //默认为系统时区
  8. ZonedDateTime zonedDateTime = ZonedDateTime.now();
  9. //2020-02-18T22:37:55+0800
  10. System.out.println(DateTimeFormatterUtil.format(zonedDateTime, DateTimeFormatterUtil.YYYY_MM_DD_T_HH_MM_SS_Z_FMT));
  11.  
  12. System.out.println(zonedDateTime.format(DateTimeFormatterUtil.ISO_DATE_FMT));
  13. System.out.println(zonedDateTime.format(DateTimeFormatterUtil.ISO_DATE_TIME_FMT));
  14. System.out.println(zonedDateTime.format(DateTimeFormatterUtil.ISO_INSTANT_FMT));
  15. System.out.println(zonedDateTime.format(DateTimeFormatterUtil.ISO_LOCAL_DATE_FMT));
  16. System.out.println(zonedDateTime.format(DateTimeFormatterUtil.ISO_LOCAL_DATE_TIME_FMT));
  17. System.out.println(zonedDateTime.format(DateTimeFormatterUtil.ISO_LOCAL_TIME_FMT));
  18.  
  19. System.out.println(zonedDateTime.format(DateTimeFormatterUtil.ISO_TIME_FMT));
  20. System.out.println(zonedDateTime.format(DateTimeFormatterUtil.ISO_WEEK_DATE_FMT));
  21. System.out.println(zonedDateTime.format(DateTimeFormatterUtil.ISO_ZONED_DATE_TIME_FMT));
  22. System.out.println(zonedDateTime.format(DateTimeFormatterUtil.BASIC_ISO_DATE_FMT));
  23. }

输出:

  1. 2020-02-19T13:47:13+0800
  2. 2020-02-19+08:00
  3. 2020-02-19T13:47:13.271+08:00[Asia/Shanghai]
  4. 2020-02-19T05:47:13.271Z
  5. 2020-02-19
  6. 2020-02-19T13:47:13.271
  7. 13:47:13.271
  8. 13:47:13.271+08:00
  9. 2020-W08-3+08:00
  10. 2020-02-19T13:47:13.271+08:00[Asia/Shanghai]
  11. 20200219+0800

(2)时区时间解析

  1. /**
  2. * 时区时间解析
  3. * YYYY_MM_DD_T_HH_MM_SS_Z = "yyyy-MM-dd'T'HH:mm:ssZ"
  4. */
  5. @Test
  6. public void parseToZonedDateTimeTest(){
  7. String text = "2020-02-18T22:37:55+0800";
  8. ZonedDateTime zonedDateTime = DateTimeFormatterUtil.parseToZonedDateTime(text, DateTimeFormatterUtil.YYYY_MM_DD_T_HH_MM_SS_Z_FMT);
  9. System.out.println(zonedDateTime);
  10.  
  11. String text2 = "2020-02-19T12:30:25.121+08:00[Asia/Shanghai]";
  12. ZonedDateTime zonedDateTime2 = DateTimeFormatterUtil.parseToZonedDateTime(text2, DateTimeFormatterUtil.ISO_ZONED_DATE_TIME_FMT);
  13. System.out.println(zonedDateTime2);
  14.  
  15. ZonedDateTime zonedDateTime3 = ZonedDateTime.parse(text2);
  16. System.out.println(zonedDateTime3);
  17. }

输出:

  1. 2020-02-18T22:37:55+08:00
  2. 2020-02-19T12:30:25.121+08:00[Asia/Shanghai]
  3. 2020-02-19T12:30:25.121+08:00[Asia/Shanghai]

源代码地址:https://github.com/xkzhangsan/xk-time

部分参考:

https://www.cnblogs.com/xwdreamer/p/8761825.html

Java日期时间API系列19-----Jdk8中java.time包中的新的日期时间API类,ZonedDateTime与ZoneId和LocalDateTime的关系,ZonedDateTime格式化和时区转换等。的更多相关文章

  1. 在swt中获取jar包中的文件 uri is not hierarchical

    uri is not hierarchical 学习了:http://blog.csdn.net/zdsdiablo/article/details/1519719 在swt中获取jar包中的文件: ...

  2. API接口自动化之3 同一个war包中多个接口做自动化测试

    同一个war包中多个接口做自动化测试 一个接口用一个测试类,每个测试用例如下,比如下面是4个测试用例,每个详细的测试用例中含有请求入参,返回体校验,以此来判断每条测试用例是否通过 一个war包中,若含 ...

  3. Andriod项目开发实战(1)——如何在Eclipse中的一个包下建新包

    最开始是想将各个类分门别类地存放在不同的包中,所以想在项目源码包中新建几个不同功能的包eg:utils.model.receiver等,最后的结果应该是下图左边这样的:   很明显建立项目后的架构是上 ...

  4. Mac 如何导出ipa文件中Assets.car包中的切图

    在之前 获取 AppStore 中 应用 的 IPA 包文件(Mac OS 13+)中获取到应用的 IPA 包,可以取出应用的部分图片(如 Logo),如果项目工程中把图片添加到 Assets.xca ...

  5. JDK中的Atomic包中的类及使用

    引言 Java从JDK1.5开始提供了java.util.concurrent.atomic包,方便程序员在多线程环境下,无锁的进行原子操作.原子变量的底层使用了处理器提供的原子指令,但是不同的CPU ...

  6. 【转】Eclipse中查看jar包中的源码

    (简单的方式:通过jd-gui来进行反编译,最简单!,参考我的另一篇博文, 地址:http://www.cnblogs.com/gmq-sh/p/4277991.html) Java Decompil ...

  7. Package.json中dependencies依赖包中^符号和~符号前缀的区别

    刚git了webpack的包发现package.json里面dependencies依赖包的版本号前面的符号有两种,一种是~,一种是^,如下图标记: 然后搜了下在stackoverflow上找到一个比 ...

  8. Java8系列 (六) 新的日期和时间API

    概述 在Java8之前, 我们一般都是使用 SimpleDateFormat 来解析和格式化日期时间, 但它是线程不安全的. @Test public void test() { SimpleDate ...

  9. Java8 新的日期和时间API(笔记)

    LocalDate LocalTime Instant duration以及Period 使用LocalDate和LocalTime //2017-03-20 LocalDate date = Loc ...

随机推荐

  1. 174. 地下城游戏(逆向DP)

    Q: 一些恶魔抓住了公主(P)并将她关在了地下城的右下角.地下城是由 M x N 个房间组成的二维网格.我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主. 骑士 ...

  2. 2019-08-01 纪中NOIP模拟B组

    T1 [JZOJ2642] 游戏 题目描述 Alice和Bob在玩一个游戏,游戏是在一个N*N的矩阵上进行的,每个格子上都有一个正整数.当轮到Alice/Bob时,他/她可以选择最后一列或最后一行,并 ...

  3. Layui之动态循环遍历出的富文本编辑器显示

    这篇记得是工作中的例子 描述: 平常的富文本显示都是根据静态的html获取id来显示,比如: <textarea class="layui-textarea" id=&quo ...

  4. python selenium设计模式POM

    POM模式是什么 页面对象模型(POM)是一种设计模式,用来管理维护一组web元素集的对象库 在POM模式下,应用程序的每一个页面都有一个对的page class 每一个page class维护着该w ...

  5. Git 从远端指定分支克隆代码到本地

    不指定分支默认是master git clone + clone 地址 # 例如 git clone https://amc-msra.visualstudio.com/xxx/_xx/xxxxxx ...

  6. angular6 路由拼接查询参数如 ?id=1 并获取url参数

    angular6 路由拼接查询参数如 ?id=1 并获取url参数 路由拼接参数: <div class="category-border" [routerLink]=&qu ...

  7. 【C语言】用C语言输出一个吃豆人

    大圆盘减去扇形和小圆盘: #include <math.h> #include <stdio.h> int main() { double x, y; ; y >= -; ...

  8. Scrapy爬取伯乐在线的所有文章

    本篇文章将从搭建虚拟环境开始,爬取伯乐在线上的所有文章的数据. 搭建虚拟环境之前需要配置环境变量,该环境变量的变量值为虚拟环境的存放目录 1. 配置环境变量 2.创建虚拟环境 用mkvirtualen ...

  9. JS-ES6语法运用

    import导入模块,js的模块化开发 浏览器使用ES6模块化语法(使用module时js代码自动运行严格模式): <script type="module" src=&qu ...

  10. js加密(四)landChina

    1. url:https://www.landchina.com/default.aspx?tabid=226 2. target: 3. 简单分析 3.1 打开fiddler和chorme无痕浏览器 ...