gpt4 book ai didi

java - Jena- 在 xml dateTime 中存储日期- 意外行为

转载 作者:行者123 更新时间:2023-11-30 03:48:33 25 4
gpt4 key购买 nike

我正在使用 ...,model.createTypedLiteral(cal)) 来存储 xml dateTime dataTypeProperty 的值。

问题是,时间未保存在我的本地时区 (UTC+05:00) 伊斯兰堡、卡拉奇) PKT 中。当我System.get.out.println(cal)时,它显示了本地时区的时间。但是,当我执行此操作 ...,model.createTypedLiteral(cal)) 并将其写入 owl 文件时,小时部分将在减去 5 小时后保存(-05:00)。这是我的代码:

...
1)Date date = new Date();
2)Calendar cal = Calendar.getInstance();
3)cal.setTime(date);

4)System.out.println(cal);
...
5)Resource resource = model.createResource(resourceURI);
6)resource.addProperty(model.createProperty(baseURI+propertyName), model.createTypedLiteral(cal));
...
write model on owl file
...

第 4 行打印

java.util.GregorianCalendar[time=1406441262261,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Karachi",offset=18000000,dstSavings=0,useDaylight=false,transitions=12,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2014,MONTH=6,WEEK_OF_YEAR=31,WEEK_OF_MONTH=5,DAY_OF_MONTH=27,DAY_OF_YEAR=208,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=4,AM_PM=0,HOUR=11,HOUR_OF_DAY=11,MINUTE=7,SECOND=42,MILLISECOND=261,ZONE_OFFSET=18000000,DST_OFFSET=0]

查看HOUR=11, HOUR_OF_DAY=11其正确的本地时间。

但是第 6 行和第 6 行之后将相同内容写入 owl 文件,并在 owl 中保存为

<created rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime"
>2014-07-27T06:07:42.261Z</created>

这是我本地时间的 -5:00。

我编写了代码从 owl 文件中检索它并在屏幕上打印

    1)List<String> dlist = new ArrayList<String>();
2)dlist= ...;
3)System.out.println(dlist.get(0));

String s = dlist.get(0);
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
try {
Date date1 = sd.parse(s);
Calendar cal = Calendar.getInstance();
cal.setTime(date1);
4) System.out.println(cal);
5) System.out.println(cal.getTime()+" "+cal.getTimeZone());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

输出:

第 3 行

2014-07-27T06:07:42.261Z^^http://www.w3.org/2001/XMLSchema#dateTime

第 4 行

java.util.GregorianCalendar[time=1406423262000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Karachi",offset=18000000,dstSavings=0,useDaylight=false,transitions=12,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2014,MONTH=6,WEEK_OF_YEAR=31,WEEK_OF_MONTH=5,DAY_OF_MONTH=27,DAY_OF_YEAR=208,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=4,AM_PM=0,HOUR=6,HOUR_OF_DAY=6,MINUTE=7,SECOND=42,MILLISECOND=0,ZONE_OFFSET=18000000,DST_OFFSET=0]

5号线

Sun Jul 27 06:07:42 PKT 2014 sun.util.calendar.ZoneInfo[id="Asia/Karachi",offset=18000000,dstSavings=0,useDaylight=false,transitions=12,lastRule=null]

所有输出显示的时间为 -5:00

请问问题出在哪里?

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

附注

如果上面的例子很复杂,那么这里是简单的:

    Model model = ModelFactory.createDefaultModel();
Resource resource = model.createResource("http://example.com/resource/test");
Property property = model.createProperty("http://example.com/prop/test");
Calendar cal = GregorianCalendar.getInstance();
System.out.println("Current time is. cal="+cal.getTime());
Literal value = model.createTypedLiteral(cal);
System.out.println("Current time saved in value as= "+value);
String s1 = value.toString();
SimpleDateFormat sd1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
Date date3;
try {
date3 = sd1.parse(s1);
cal.setTime(date3);
System.out.println("Retrieving back the time from value variable as date="+cal.getTime());
resource.addProperty(property, value);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

输出:

Current time is. cal=Sun Jul 27 13:04:53 PKT 2014
Current time saved in value as= 2014-07-27T08:04:53.681Z^^http://www.w3.org/2001/XMLSchema#dateTime
Retrieving back the time from value variable as date=Sun Jul 27 08:04:53 PKT 2014

结果中,第一行和第二行显示的时间不同。为什么会这样呢?

最佳答案

尝试

中的代码
com.hp.hpl.jena.sparql.util.NodeFactoryExtra.dateTimeToNode

或者它使用的例程:

com.hp.hpl.jena.sparql.util.Utils.calendarToXSDDateTimeString(...)

要获取词法形式,请创建 xsd;dateTime 类型的类型文字。

这些补偿了 Xerces 标准化为 Z 时区的事实。

关于java - Jena- 在 xml dateTime 中存储日期- 意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24978636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com