我正在编写一个股票程序,它(到目前为止)通过这样的请求从“Markit on Demand”获取数据:
http://dev.markitondemand.com/Api/v2/Quote/xml?symbol=aapl
这将返回 xml 中的数据,以及股票的各种度量(符号、名称、最后价格、变化、时间戳等)。
我在 Java 8 中创建 DateTimeFormatter 来制作时间戳时遇到问题。
时间戳的一个示例:
Fri Jul 18 15:59:00 UTC-04:00 2014
到目前为止,我拥有的模式如下:
EEE MMM d HH:mm:ss OOOO yyyy
我相信你们中的一些人可以发现,我在偏移方面遇到了麻烦。
从文档:
偏移量 X 和 x:这根据模式字母的数量格式化偏移量。一个字母只输出小时,例如“+01”,除非分钟不为零,在这种情况下也会输出分钟,例如“+0130”。两个字母输出小时和分钟,没有冒号,例如“+0130”。三个字母输出小时和分钟,带一个冒号,例如“+01:30”。四个字母输出小时和分钟以及可选的秒,没有冒号,例如“+013015”。五个字母输出小时和分钟以及可选的秒,带有冒号,例如“+01:30:15”。六个或更多字母抛出 IllegalArgumentException。当要输出的偏移量为零时,模式字母 'X'(大写)将输出 'Z',而模式字母 'x'(小写)将输出 '+00', '
Offset O:根据模式字母的数量格式化本地化的偏移量。一个字母输出本地化偏移量的缩写形式,即本地化偏移量文本,例如“GMT”,小时不带前导零,可选的两位数分钟和秒(如果非零)和冒号,例如“GMT+8” '。四个字母输出完整形式,它是本地化的偏移文本,例如'GMT,带有两位数的小时和分钟字段,可选的第二个字段(如果非零)和冒号,例如'GMT+08:00'。任何其他字母计数都会引发 IllegalArgumentException。
偏移 Z:这会根据模式字母的数量格式化偏移量。一、二或三个字母输出小时和分钟,不带冒号,例如“+0130”。当偏移量为零时,输出将为“+0000”。四个字母输出局部偏移的完整形式,相当于Offset-O的四个字母。如果偏移为零,则输出将是相应的本地化偏移文本。五个字母输出小时、分钟,如果非零,可选秒,带冒号。如果偏移为零,则输出“Z”。六个或更多字母抛出 IllegalArgumentException。
// String rawDate = Fri Jul 18 15:59:00 UTC-04:00 2014
DateTimeFormatter PARSER_PATTERN = DateTimeFormatter.ofPattern("EEE MMM d HH:mm:ss 'UTC'XXX yyyy");
ZonedDateTime timeStamp = ZonedDateTime.parse(rawDate, PARSER_PATTERN);
Run Code Online (Sandbox Code Playgroud)
这有效,但我很好奇为什么(代替'UTC'XXX)OOOO不起作用。
jTDS 当前不支持datetimeoffsetSQL Server 2008 中引入的数据类型。
任何人都可以建议是否有办法将datetimeoffset类型与 jTDS一起使用?
我想在SQL Server 2005数据库中存储aac#DateTimeOffset值.
Sql 2008将此作为内置类型,但SQL Server 2005没有.
DateTimeOffset结构具有DateTime值,我将其存储为DateTime,一个Offset属性(TimeSpan类型).由于这是相对于UTC的时区,因此可能通常是整数小时或半小时.
关于如何最好地将其存储在SQL Server 2005数据库中的建议?
使用SQL Server 2008.I有一个表叫用户具有列LastLogindata与datetimeoffset数据类型
以下查询适用于生产服务器,但不适用于复制服务器。
select top 10 CAST(LastLoginDate AS DATETIME) from User.
Run Code Online (Sandbox Code Playgroud)
我收到以下错误。将 datetimeoffset 数据类型转换为 datetime 数据类型导致值超出范围。
谢谢
什么是log4net.Layout.PatternLayout值以将DateTimeOffset数据类型输出到数据库?
这是我目前在log4net的配置文件中所拥有的:
<log4net>
....
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}" />
</parameter>
...
</log4net>
Run Code Online (Sandbox Code Playgroud)
我希望有类似的东西:
<log4net>
....
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTimeOffset" />
<layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff **OFFSET**}" />
</parameter>
...
</log4net>
Run Code Online (Sandbox Code Playgroud)
基本上我们重用相同的数据库来记录位于不同时区的客户端的事件 - 所以我们想知道事件的确切本地时间.
谢谢,亚历克斯
文档指出,在.NET和SQL Server中,分辨率均为100ns。
DateTimeOffset值的时间分量以100纳秒单位(称为刻度)进行度量 -C# 精度-100纳秒 -SQL Server
但是SQL似乎删除了最后一位数字(例如,我试图保存2013-08-15 09:19:07.2459675 -04:00,SQL保存2013-08-15 09:19:07.2459670 -04:00-通知最后一位数字发生变化。)
这发生在同一台计算机上,因此与硬件无关。
并不是我真的需要这个解决方案,但是它使比较日期变得更加困难..我很好奇。
如何只设置SQL datetimeoffset变量的时间部分?
例如:
DECLARE @date datetimeoffset = '2014-01-11 11:04:26 +02:00'
Run Code Online (Sandbox Code Playgroud)
我想计算另外两个datetimeoffsets:
@startdate should be '2014-01-11 00:00:00 +02:00'
@enddate should be '2014-01-12 00:00:00 +02:00'
Run Code Online (Sandbox Code Playgroud)
但我尝试的所有解决方案都将偏移设置为零.
注意:我需要结果中的原始偏移量,因为我需要将它们与表中的某些datetimeoffset列进行比较.所以只是投射到一个日期是行不通的.
进一步说明:在SQL2012中这很容易; 我可以使用DATETIMEOFFSETFROMPARTS.不幸的是,我目前无法升级到2012.例:
SET @startdate = SELECT DATETIMEOFFSETFROMPARTS(datepart(yyyy, @date), datepart(mm, @date), datepart(dd, @date), 0, 0, 0, 0, datepart(tz, @date), 0, 7);
Run Code Online (Sandbox Code Playgroud) 我正在使用QuickBooks Web Connector使用QBXML请求将员工记录从Windows 8.1计算机上的QuickBooks Desktop中拉出。是否有原因导致TimeModified时间戳返回的偏移量不占夏时制时间的原因?有没有一种方法可以获取主机系统上的当前时间?
即使当前时区已设置为“东部时间”并启用了“调整夏令时”,当前仍为TimeModified返回“ 2014-03-27T14:20:53-05:00”。偏移量应为-04:00。
QBXML请求:
<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="12.0"?>
<QBXML>
<QBXMLMsgsRq onError="stopOnError">
<EmployeeQueryRq metaData="MetaDataAndResponseData">
<OwnerID>0</OwnerID>
</EmployeeQueryRq>
</QBXMLMsgsRq>
</QBXML>
Run Code Online (Sandbox Code Playgroud) 我正在尝试从 to 转换java.sql.timestamp,OffsetDateTime以便我可以ISO8601在我的 rest api 中返回标准字符串。我正在使用此代码转换timestamp为OffsetDateTime
public static OffsetDateTime sqlTimetampeToOffsetDateTime(Timestamp ts, String timeZone)
{
if (ts == null)
{
return null;
}
Calendar cal = Calendar.getInstance();
cal.setTime(ts);
ZoneOffset offset = ZoneOffset.of(timeZone);
return OffsetDateTime.of(
cal.get(Calendar.YEAR),
cal.get(Calendar.MONTH)+1,
cal.get(Calendar.DAY_OF_MONTH),
cal.get(Calendar.HOUR_OF_DAY),
cal.get(Calendar.MINUTE),
cal.get(Calendar.SECOND),
cal.get(Calendar.MILLISECOND)*1000000,
offset);
}
Run Code Online (Sandbox Code Playgroud)
但是,代码在ZoneOffset offset = ZoneOffset.of(timezone)for value处失败Europe/Copenhagen。
我使用以下代码打印所有时区的列表,我确实Europe/Copenhagen在该列表中看到
Set<String> allZones = ZoneId.getAvailableZoneIds();
LocalDateTime dt = LocalDateTime.now();
List<String> zoneList = new ArrayList<String>(allZones);
Collections.sort(zoneList);
for (String s …Run Code Online (Sandbox Code Playgroud) 在我的ASP.NET Core Web-API项目中,我正在对我的一个API控制器进行HTTP POST调用。
在评估JSON有效负载并反序列化其内容时,Json.NET偶然发现DateTime值为,0001-01-01T00:00:00并且无法将其转换为DateTimeOffset属性。
我注意到该值大概应该代表DateTimeOffset.MinValue的值,但是缺少时区似乎会使解串器崩溃。我只能想象DateTimeOffset.Parse试图将其转换为主机当前时区,从而导致DateTimeOffset.MinValue下溢。
该属性非常简单:
[JsonProperty("revisedDate", NullValueHandling = NullValueHandling.Ignore)]
public DateTimeOffset? RevisedDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
这是发送给客户端的响应:
{
"resource.revisedDate": [
"Could not convert string to DateTimeOffset: 0001-01-01T00:00:00. Path 'resource.revisedDate', line 20, position 44."
]
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Newtonsoft.Json v11.0.2,目前使用的是UTC + 2(德国)。异常回溯和错误消息在这里:https : //pastebin.com/gX9R9wq0。
我无法修复调用代码,因此必须在行的一侧进行修复。
但是问题是:如何?