【发布时间】:2014-05-30 02:09:51
【问题描述】:
我正在使用 xpath 从 XML 文件中提取 2 个时间值(作为字符串),这些值(例如)如下:
00:07
08:00
00:07 等于 7 分钟
08:00 表示上午 8 点,没有关联或不需要日期(在其他地方处理)
这些值中的每一个都会在我阅读的每个 XML 文件中发生变化。我正在尝试做的事情如下:
- 我需要从早上 8 点减去或添加(视情况而定)7 分钟,并在我最终可以输出到 CSV 的字符串中给我一个 hh:mm 时间(例如:07:53 或 08:07)
- 接下来我需要生成 2 个额外的字符串,分别是之前 1 分钟和之后 1 分钟(例如:07:52 和 07:54 或 08:06 和 08:08),这些字符串也需要输出到 CSV
我已经尝试了所有方法,我可以想到与时间解释和操作相关的时间,以将分钟减去/添加到时间,然后从那里减去 +/- 1 分钟,但是作为一个完整的新手,我完全被困住了,尽管尽可能多地阅读和测试。过去 2 天是第一次与 Joda Time 一起工作,但我一定错过了一些基本的东西,因为我也无法得到想要的结果。
问题是 - 我怎样才能做到这一点?
一些示例代码让我从 XML 中读取并打印时间
FileInputStream file = null;
try {
file = new FileInputStream(new File("Output/XmlConfig.xml"));
} catch (FileNotFoundException ex) {
Logger.getLogger(KATT.class.getName()).log(Level.SEVERE, null, ex);
}
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;
try {
builder = builderFactory.newDocumentBuilder();
} catch (ParserConfigurationException ex) {
Logger.getLogger(KATT.class.getName()).log(Level.SEVERE, null, ex);
}
Document xmlDocument = null;
try {
xmlDocument = builder.parse(file);
} catch (SAXException ex) {
Logger.getLogger(KATT.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(KATT.class.getName()).log(Level.SEVERE, null, ex);
}
XPath xPath = XPathFactory.newInstance().newXPath();
//get In Early rule from XML
String exceptionInEarlyXML = "Root/Response/WSAExceptionRule/@InEarly";
NodeList nodeListInEarly = null;
try {
nodeListInEarly = (NodeList) xPath.compile(exceptionInEarlyXML).evaluate(xmlDocument, XPathConstants.NODESET);
} catch (XPathExpressionException ex) {
Logger.getLogger(KATT.class.getName()).log(Level.SEVERE, null, ex);
}
String exceptionInEarly = (nodeListInEarly.item(1).getFirstChild().getNodeValue());
String InEarly = exceptionInEarly;
SimpleDateFormat format = new SimpleDateFormat("hh:mm");
Date d2 = null;
try {
d2 = format.parse(InEarly);
} catch (ParseException ex) {
Logger.getLogger(KATT.class.getName()).log(Level.SEVERE, null, ex);
}
DateTime dt2 = new DateTime(d2);
System.out.println(dt2);
这给了我 1970-01-01T00:07:00.000+10:00 的输出
我已经尝试了很多代码排列,因为它不可编译,所以我要删除并重新从头开始,而且我还没有足够的经验来解决这个问题。
【问题讨论】:
-
如果您有
"tried everything"和"spent the last 2 days...",请向我们展示您的努力成果。 -
1970-01-01T00:07:00.000+10:00 有什么问题?
-
我不知道如何从这个值中减去 x 分钟(00:07 基于我从 xml 中提取的另一个字符串)并给我一个 07:53 的输出。
标签: java xml string swing jodatime