使用并解析 OPML 格式的订阅列表来转移自己的 RSS 订阅(解析篇) OPML 全称是 Outline Processor Markup Language ,即 大纲处理标记语言。...本文将介绍这个古老的格式,并提供一个 .NET 上的简易解析器。...---- 本文是两个部分的第二篇,前者是理解 OPML 格式,此篇是解析此格式: 概念篇 解析篇(本文) OPML 格式 在解析之前,最好先理解此格式的的元素组成和元素属性,所以如果你没有阅读 概念篇,...为了尽可能简化此博客的代码,参数我直接使用了 XElement 类型,以便在方法中使用 XPath 语法来解析。(当然,如果你是做库或者进行大型可维护项目的开发,这里就需要一些抽象了。)...使用此 OPML 模型 当你把这些类都准备好,那么你就可以使用简单的几句话来完成 OPML 文档的解析了。
本文将介绍这个古老的格式,并提供一个 .NET 上的简易解析器。...本文分为两个部分,一个是理解 OPML 格式,一个是解析此格式: 概念篇(本文) 解析篇 OPML 格式 RSS 订阅你应该并不陌生,你可以在我的博客上方看到 RSS 的订阅源按钮,也可以在各大博客站点发现这样的订阅按钮...这么古老的格式也不妨碍它依然成为订阅源交换的标准格式。不过我们这篇文章不会去谈历史,我们只谈它的格式以及使用。...还有一些可选属性: description htmlUrl language title version OPML 的解析 在了解了 OPML 的格式组成之后,便可以很容易的地解析此文件了。...本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
Joda-Time 令时间和日期值变得易于管理、操作和理解。事实上,易于使用是 Joda 的主要设计目标。其他目标包括可扩展性、完整的特性集以及对多种日历系统的支持。...但在撰写本文之际,Joda-Time API 目前似乎是唯一处于活跃开发状态下的 Joda API。...可以使用多种方式构建 DateTime 对象。...String(必须经过解析),您必须对其进行精确地格式化。...以 Joda 方式格式化时间 使用 JDK 格式化日期以实现打印是完全可以的,但是我始终认为它应该更简单一些。这是 Joda 设计者进行了改进的另一个特性。
更糟的是,有的特性只在某一个类有提供,比如用于语言无关方式格式化和解析日期或时间的DateFormat方法就只在Date类有。...DateFormat不是线程安全的,二个线程同时使用formatter解析日期,你可能会得到无法预期的结果。 在jdk1.8之前,这些问题使得用户们使用了第三方日期和时间库,比如Joda Time。...如果我们工作中的jdk版本是1.8版本之前可以使用Joda Time项目,Joda项目中其实包括的不止Joda Time,还包括Joda-Money ,Joda-Beans,Joda-Convert ,...以年,月,日方式建模,可以使用Period类。 ? 关于二者其他的api可以对照java api文档进行查看,比较浅显。...格式化与解析时间对象DateTimeFormatter 创建格式器最简单的方法是通过DateTimeFormatter的静态工厂方法以及常量。
,可以使用正则表达式或更复杂的字符串处理逻辑来验证格式。...使用内置验证机制 在Java 8及以后的日期时间API中,一些解析方法在解析失败时会提供更详细的错误信息。...如果是处理多种本地化的日期时间字符串,可以使用本地化感知的解析方法。...三、其他解决方法 使用第三方日期时间解析库 考虑使用一些成熟的第三方日期时间解析库,如Joda - Time(虽然Java 8及以后有了新的日期时间API,但在某些遗留项目或特定需求下仍可能有用)或其他专门处理复杂日期时间格式的库...例如,使用Joda - Time的DateTimeFormat类来解析日期时间字符串: import org.joda.time.DateTime; import org.joda.time.format.DateTimeFormat
API设计和易于理解 - 旧的时间api非常难以理解,操作都非常复杂,非常绕口,没有提供一些常用的解析转换方法。...作为本节的一部分,我们将介绍最常用的API。 3.1。使用LocalDate LocalDate表示在ISO格式(YYYY-MM-DD)下的不带具体时间的日期。...例如,下面的代码使用“of”方法创建表示06:30 AM的LocalTime: LocalTime sixThirty = LocalTime.of(6, 30); 下面的示例通过解析字符串来创建LocalTime...-25: String localDateString = localDateTime.format(DateTimeFormatter.ISO_DATE); 该DateTimeFormatter提供多种标准格式选项...通过在项目中引用以下pom依赖项就可以立即使用: joda-time joda-time</artifactId
今天做一个新东西的时候发现了 Joda Time的这个东西, 因为以前用的都是JDK原生的时间处理API, 大家都知道Java原生的时间处理的API一直都是不太好用, 所以这个有必要去学习下, 去总结下...支持多种年表(即日历系统)及所有时区。...用于处理日期计算的 API 方法全部返回一个对应 Joda-time 类的新实例,同时保持原始实例不变。...当我们通过一个 API 方法操作 Joda 类时,我们必须捕捉该方法的返回值,因为我们正在处理的实例不能被修改。...好了, 我所了解的就是这么多, 我主要还是从如何使用的角度去学习这个东西, 最后总结了它的几个特性, 当然Joda-Time的强大之处远不止这些, 大家在以后的工作中可以尝试着去使用它.
在性能测试场景中,测试工程师通常会使用 Timestamp 来记录接口请求的精确时间点,以便后续分析响应延迟和性能瓶颈。...库 Joda-Time 是一个功能强大的第三方日期时间库,曾长期被广泛应用于 Java 开发中,特别擅长处理复杂的日期计算与格式化任务。...虽然现代项目大多已经转向使用 Java 8 的日期时间 API,但在维护老项目或测试遗留系统时,Joda-Time 依然具有重要价值。...这种方式在处理遗留系统时非常实用,尤其是在老系统使用 Joda-Time 的同时,新模块引入了 Java 8 的时间 API,测试工程师往往需要在两者之间进行时间数据的兼容和验证。...在一些遗留系统中,仍大量使用 Joda-Time 进行时间处理。
Java API 的设计思想是支持国际化的,支持多种年历,但没有直接支持中国的农历,本书主要讨论公历。...在军事中,协调世界时区会使用“Z”来表示。又由于Z在无线电联络中使用“Zulu”作代称,协调世界时也会被称为"Zulu time"。...参数取值范围 Java 8 的日期格式化和解析 Java 8 提供的日期格式化类是 java.time.format.DateTimeFormatter,DateTimeFormatter 中本身没有提供日期格式化和日期解析方法...日期解析 日期解析方法是 parse,这三个类每一个都有两个版本的 parse 方法,具体说明如下: static LocalDateTime parse(CharSequence text):使用默认格式...DateTimeFormatter.BASIC_ISO_DATE); 指定时区获取当前时间 LocalDateTime.now(Clock.system(ZoneId.of("Asia/Shanghai"))) 自定义的格式器来解析日期
使用 LocalDate 使用Java 8的新的Date-Time API,我们可以使用LocalDate对象。 这是一个不可变的对象,表示不包含时间的日期对象。...使用SimpleDateFormat 从Java的早期版本开始,我们已经能够使用SimpleDateFormat类在Date和String对象表示形式之间进行转换。 此类附带使用多种模式的转换功能。...使用此方法,我们将格式化日期,将其转换为String对象,然后使用标准的equals方法进行比较: public static boolean isSameDay(Date date1, Date date2...外部库 通过上面的例子,我们通过 Java 新的和旧的 API 对比 两个 Java 日期对象是否为同一天。 下面我们将使用三方类库实现相同的功能。 3.1....希望大家多了解常见的时间工具类,在有类似需求的情况下使用知名的三方时间工具类来简化代码。
在Java8发布之前繁琐的日期API使我们不得不借助第三方的Jar包Joda来对日期进行操作,而Java8的日期java.time包则是由Joda的作者来进行操刀,我相信不管是因为Java8...时间格式化 LocalDateTime now = LocalDateTime.now(); DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd...HH:ss:mm"); String format = df.format(now); 字符串解析 DateTimeFormatter df = DateTimeFormatter.ofPattern...提供支持,只需要在日期字段上加注解 @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Mybatis mybatis中数据库字段对应的实体类时间也是默认使用.../version> 引入包之后不需要做任何改变,实体类为LocalDateTime等的字段就可以识别 SpringDataJPA Spring的做法跟Mybatis的类似,使用一个
Log4J 提供对多个API的支持,可以在白名单应用程序中使用不同版本的 Log4j 或 SLF4J。另一个有趣的功能是它支持用户自定义的消息对象。最重要的是,它的工作速度相当令人印象深刻。...07. jsoup jsoup 是一个有用的 Java 库,用于处理和解析 HTML。Jsoup 提供了一个有用的用于提取数据的 API。jsoup 中实现的标准是 WHATWG HTML5。...Joda Time 很容易使用,并且像 getYear()或 getDayOfWeek()这样的属性访问器可以直接获取日期,及其更详细的信息。...Joda Time 还提供计算日期和时间的功能,并支持几乎所有需要的日期格式,而且肯定难以用简单的 JDK 方法进行复制。...从头开发也是一种选择,但是当你找到了可以自由使用的插件,为什么还要花费更多的时间来重新开发构建呢?
08. jsoup jsoup是一个很实用的Java库,用于处理和解析HTML。Jsoup提供了一个有用的用于提取数据的API。jsoup中实现的标准是WHATWG HTML5。...和最新的浏览器作法一样,jsoup将HTML解析为DOM。 ?...它允许解析来自任何URL或文件的HTML,清理和操纵HTML元素和属性,以检索用户提交的数据并过滤掉XSS攻击属性,使用jsoup还可以完成更多功能。 09....Joda Time 这就是我一直强调的简单但功能强大的库,它节省了大量的开发时间。Joda-Time是一个Java库,作为Java中日期和时间类的一个很好的替代品。...Joda Time提供计算日期和时间的功能,并支持几乎所有需要的日期格式,而且肯定难以用简单的JDK方法进行复制 11. Ok HTTP 用于通过HTTP协议有效地在现代应用程序之间交换数据。
Joda-Time 上节介绍了JDK API中的日期和时间类,我们提到了JDK API的一些不足,并提到,实践中有一个广泛使用的日期和时间类库,Joda-Time,本节我们就来介绍Joda-Time。...Joda-Time的主要类和Java API的类也有一个粗略的对应关系: Joda-Time Java API 说明 Instant Date 时刻 DateTime Calendar 年历 DateTimeZone...虽然基本概念是类似的,但API的设计却有很大不同,Joda-Time的API更容易理解和使用,代码也更为简洁,下面我们会通过例子来说明。...格式化 Java API中,格式化必须使用一个DateFormat对象,而Joda-Time中,DateTime自己就有一个toString方法,可以接受一个pattern参数,看例子: //2016...我们也介绍了Joda-Time之所以易用的一些设计思维,比如,关注点分离,为方便操作,提供单独的功能明确的类和方法,设计API为流畅接口,设计为不可变类,使用工厂类等。
JDK提供了TimeZone表示时区的概念,但它在Date里并无任何体现,只能使用在格式化器上,这种设计着实让我再一次看不懂了。...类:格式化和解析字符串 Date类:只用来承载日期和时间 有了Calendar后,原有Date中的大部分方法均标记为废弃,交由Calendar代替。...最重要的是Calendar的API使用起来真的很不方便,而且该类在语义上也完全不符合日期/时间的含义,使用起来更显尴尬。...对于Java来说,如此重要的API模块岂能被第三方库给占据,开发者本就想简单的处理个日期时间还得导入第三方库,使用也太不方便了吧。当时的Java如日中天,因此就开启了“收编”Joda-Time之旅。...不客气的说JSR 310是在Joda-Time的基础上建立的,参考了其绝大部分的API实现,因此若你之前是Joda-Time的重度使用者,现在迁移到Java 8原生的JSR 310日期时间上来几乎无缝。
SimpleDateFormat是一个用来对位置敏感的格式化和解析日期的实体类。他允许把日期格式化成text,把text解析成日期和规范化。...07-09 11:10:21")); } 1.首先需要定义一个日期的pattern,这里我们定义的是"yyyy-mm-dd HH:mm:ss" ,也就是我们这个simpleDateFormat不管是格式化还是解析都需要按照这个...对于我们复杂的操作都可以使用Joda-Time操作,下面我列举两个例子,对于把日期加上90天,如果使用原生的Jdk我们需要这样写: Calendar calendar = Calendar.getInstance...中只需要两句话,并且api也比较通俗易懂,所以你为什么不用Joda-Time呢?...如果你是Java8,那你一定要使用他,在日期的格式化和解析方面不用考虑线程安全性,代码如下: public static String formatTime(LocalDateTime time,String
Java8 在 java.time 包下新增了全新的日期和时间 API。新的 Date API 与 Joda-Time 库有点相似,但又有不一样。...中,时区使用 ZoneId 来表示,可以很方便的使用静态方法 of 来获取到。...,同时引入了一个新的类 DateTimeFormatter 来解决日期格式化问题。...06分09秒"; // 根据需要解析的日期、时间字符串定义解析所用的格式器 DateTimeFormatter fomatter1 = DateTimeFormatter.ofPattern...LocalDateTime 和格式化时间和日期一样的,除了使用预定义好的格式外,我们也可以自己定义格式: DateTimeFormatter formatter = DateTimeFormatter.ofPattern
在Java中处理日期和时间是很常见的需求,基础的工具类就是我们熟悉的Date和Calendar,然而这些工具类的api使用并不是很方便和强大,于是就诞生了Joda-Time这个专门处理日期时间的库。...值得一提的是,Joda-Time的作者Stephen Colebourne和Oracle一起共同参与了这些API的设计和实现。...值得注意的是,Java 8中的java.time包中提供的API和Joda-Time并不完全相同。...这篇文章关注Joda-Time的使用。...Joda-Time使用可插拔的机制来设计日历系统,而JDK则是使用子类的设计,比如GregorianCalendar。下面的代码,通过调用一个工厂方法获得Chronology的实现: ?