Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于比较的Jackrabbit数据格式_Java_Xpath_Jackrabbit - Fatal编程技术网

Java 用于比较的Jackrabbit数据格式

Java 用于比较的Jackrabbit数据格式,java,xpath,jackrabbit,Java,Xpath,Jackrabbit,我正在使用Jackrabbit存储我的文档。 现在,我想使用XPATH搜索在特定日期之后创建的文档。为此,我尝试了以下方法: String dateString = date.toString(); //element(*,nt:file)[@jcr:created >= xs:dateTime(dateString)] date是类java.util.date的对象 日期字符串格式为:Wed Mar 16 00:00:00 CET 2011 但这给了我一个InvalidQueryExc

我正在使用Jackrabbit存储我的文档。 现在,我想使用XPATH搜索在特定日期之后创建的文档。为此,我尝试了以下方法:

String dateString = date.toString();
//element(*,nt:file)[@jcr:created >= xs:dateTime(dateString)]
date是类java.util.date的对象 日期字符串格式为:Wed Mar 16 00:00:00 CET 2011

但这给了我一个
InvalidQueryException
,表明dateString是错误的:

无效查询:第行出现词法错误 1,第136栏。遇到:“0”(48), 在语句的“:”之后

所以问题是:xs:dateTime的正确日期格式是什么


提前感谢

xs:dateTime
使用特定模式-请参阅和。因此,为了生成该格式,您需要使用合适的
DateFormat
,而不是使用date.toString()。大概是这样的:

DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
String dateString = format.format(date);
但是,xs:dateTime的构造函数实际上需要两个参数:一个用于日期,一个用于时间。看

所以我想你可以用这个:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
DateFormat tf = new SimpleDateFormat("HH:mm:ss");
String dateString = df.format(date);
String timeString = tf.format(date);

xs:dateTime
使用特定模式-请参阅和。因此,为了生成该格式,您需要使用合适的
DateFormat
,而不是使用date.toString()。大概是这样的:

DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
String dateString = format.format(date);
但是,xs:dateTime的构造函数实际上需要两个参数:一个用于日期,一个用于时间。看

所以我想你可以用这个:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
DateFormat tf = new SimpleDateFormat("HH:mm:ss");
String dateString = df.format(date);
String timeString = tf.format(date);

为了完整起见:

我找到了另一种(Jackrabbit/JCR依赖)获取格式正确的日期字符串的方法:

Calendar cal = Calendar.getInstance();
cal.setTime(date);
String dateString = ValueFactoryImpl.getInstance().createValue(cal).getString();

此dateString可与
xs:dateTime

的单个参数构造函数一起使用,只是为了完整性:

我找到了另一种(Jackrabbit/JCR依赖)获取格式正确的日期字符串的方法:

Calendar cal = Calendar.getInstance();
cal.setTime(date);
String dateString = ValueFactoryImpl.getInstance().createValue(cal).getString();

此日期字符串可用于
xs:dateTime

的单个arg构造函数。此外,我对JAckRabbit日期格式有一些问题,需要在两个日期之间获取一些实体:

@createdDate>=xs:dateTime(startDate)
@createdDate另外,我对JAckRabbit日期格式有一些问题,我需要在两个日期之间获取一些实体:

@createdDate>=xs:dateTime(startDate)
@createdDate对于Jackrabbit这对我来说很有效:
yyyy-MM-dd'HH:MM:ss.SSSX
2015-12-16T15:16:50.465-02:00
)当以前的某个代码使用日历并完成时:
prop.getValue().getString()


无法让Z工作(“不可解析的日期”)。

对于Jackrabbit,这对我有效:
yyy-MM-dd'HH:MM:ss.SSSX
2015-12-16T15:16:50.465-02:00
)当以前的某个代码使用日历并完成时:
prop.getValue().getString()


无法让Z正常工作(“无法解析的日期”)。

谢谢您的回复。看起来这是一个正确的答案,但在尝试此操作时,我得到一条消息:
无效查询:无法解析xs:dateTime:2011-02-28T00:00:00的字符串文字。
。使用两个参数构造函数没有帮助,请尝试使用两个参数构造函数获取日期时间。仍在获取解析错误。但是我找到了正确的格式:
yyyy-MM-dd'T'HH:MM:ss.SSS'Z'
。由于我通过阅读您的链接发现了这一点,我将接受您的答案;)谢谢你的回复。看起来这是一个正确的答案,但在尝试此操作时,我得到一条消息:
无效查询:无法解析xs:dateTime:2011-02-28T00:00:00的字符串文字。
。使用两个参数构造函数没有帮助,请尝试使用两个参数构造函数获取日期时间。仍在获取解析错误。但是我找到了正确的格式:
yyyy-MM-dd'T'HH:MM:ss.SSS'Z'
。由于我通过阅读您的链接发现了这一点,我将接受您的答案;)为了更完整一点,从
JackrabbitSession.getValueFactory()
方法中获取
ValueFactory
的实例,这样就不需要引用实现类。为了更完整一点,从
JackrabbitSession.getValueFactory()中获取
ValueFactory
的实例
方法,因此不需要对实现类的引用。