标签: datetimeoffset

如何将.NET DateTimeOffset转换为Sql2008 DateTimeOffset

我不确定如何正确格式化.NET DateTimeOffset变量,作为字符串,以便SqlServer 2008更正解析值.

目前,如果我.ToString()从正常的DateTimeOffset值提供默认值,则会出错.

这是一个.ToString()错误的示例值(例如,Sql2008不喜欢它):'25/12/2008 2:12:21 PM +00:00'

更新

只是为了澄清,我知道.ToString()它不是兼容的Sql2008格式.我希望有人能够告诉我我需要提供给新SqlDataType 合法的IFormattableProvider参数(对于.ToString()方法)DateTimeOffset.

回答

我自己回答了.我想出了正确的IFormattableProvider args

myDateTimeOffest.ToString("yyyy-MM-dd HH:mm:ss.ffffff zzz")

.net datetimeoffset sql-server-2008

6
推荐指数
1
解决办法
1454
查看次数

DateTimeOffsetAdapter干扰DateTimeOffset对象的WCF序列化

我有一个由Visual Studio 2008(.net 3.5 sp1)生成的WCF服务引用(=客户端代理).生成的代码包含具有DateTimeOffset属性的数据协定,因此自然VS使用KnowTypeAttribute(System.DateTimeOffset)对其进行装饰.

每当我调用返回上述数据协定的WCF操作时,我都会收到以下异常:

类型'System.DateTimeOffset'无法添加到已知类型列表,因为另一个类型'System.Runtime.Serialization.DateTimeOffsetAdapter'具有相同的数据协定名称' http://schemas.datacontract.org/2004/07/System:DateTimeOffset '已经存在了

我知道DateTimeOffsetAdapter是System.Runtime.Serialization中的一个结构,在序列化DateTimeOffset对象时使用.那么为什么它会引起这种异常呢?如何解决或避免这种情况呢?

.net wcf serialization datetimeoffset

6
推荐指数
1
解决办法
1353
查看次数

如何在Objective-C中增加NSDate对象

我想在第二天给出当前日期我使用的代码如下

+(NSDate *)getForDays:(int)days fromDate:(NSDate *) date {
    NSTimeInterval secondsPerDay = 24 * 60 * 60 * days;
        return [date addTimeInterval:secondsPerDay];
} 
Run Code Online (Sandbox Code Playgroud)

这工作正常,但启用夏令时会导致错误.如何在启用夏令时时使其工作.

cocoa objective-c datetimeoffset

6
推荐指数
1
解决办法
2959
查看次数

将DateTime.MinValue转换为DateTimeOffset

我试图将DateTime.MinValue转换为DateTimeOffset值,但我得到一个ArgumentOutOfRange异常.

我正在查看关于DateTime到DateTimeOffset的隐式转换的MSDN文章,而Exception部分声明我将收到此ArgumentOutOfRange异常;

...应用偏移量产生的协调世界时(UTC)日期和时间于MinValue....

那么为什么以下代码会抛出异常;

DateTime test = DateTime.MinValue;
DateTimeOffset dto = test;
Run Code Online (Sandbox Code Playgroud)

这仅仅是因为我的时区吗?我在GMT +8,但我对上述代码的理解是测试是使用Unspecified类型创建的.

我正在解决这个问题,只需测试我的DateTime的MinValue,如果是的话,那么使用DateTimeOffset.MinValue代替.

我只是好奇为什么我的未指定的类DateTime对象导致错误.

datetime datetimeoffset

6
推荐指数
1
解决办法
2657
查看次数

为"半月刊"添加多少天

我有一个名为enum的类型,PaymentFrequency其值表示每年有多少付款......所以我有

public enum PaymentFrequency
{
    None             = 0,
    Annually         = 1,
    SemiAnnually     = 2,
    EveryFourthMonth = 3,
    Quarterly        = 4,
    BiMonthly        = 6,
    Monthly          = 12,
    EveryFourthWeek  = 13,
    SemiMonthly      = 24,
    BiWeekly         = 26,
    Weekly           = 52
}
Run Code Online (Sandbox Code Playgroud)

基于NumberOfPayments,PaymentFrequency和,FirstPaymentDate(类型的DateTimeOffset)我想计算LastPaymentDate.但是我有一个问题是在SemiMonthly的情况下确定要添加多少时间单位(天,月)......

    switch (paymentFrequency)
    {
        // add years...
        case PaymentFrequency.Annually:
            LastPaymentDate = FirstPaymentDate.AddYears(NumberOfPayments - 1); 
            break;
        // add months...
        case PaymentFrequency.SemiAnnually:
            LastPaymentDate = FirstPaymentDate.AddMonths((NumberOfPayments - 1) * 6); // 6 months
            break; …
Run Code Online (Sandbox Code Playgroud)

c# datetime date datetimeoffset

6
推荐指数
1
解决办法
5307
查看次数

在给定的持续时间内获得两个时区之间的时区偏移

我想知道是否有办法在给定的持续时间内获得两个时区之间给定日期范围的时区偏移量.

getTimezoneOffset(startDate,endDate,timezone1,timezone2){
    ...missing magic to go here...
}
Run Code Online (Sandbox Code Playgroud)

应该返回对给定持续时间有效的时区偏移量.但是,如果偏移量发生变化,则应返回其有效的日期范围.

所以我看的是这样的:

getTimezoneOFfset("march 9 12 am", "march 15 12 am", "UTC", "US/NEW_YORK")
Run Code Online (Sandbox Code Playgroud)

返回值这样的东西

timezoneoffset[0]["range"]=[march 9 12am to march 11 2 am]
timezoneoffset[0]["offset"]=5
timezoneoffset[1]["range"]=[march 9 2 am to march 15 12 am]
timezoneoffset[1]["offset"]=4
Run Code Online (Sandbox Code Playgroud)

我只是不想为给定范围的每个计划项目计算时区偏移量.正在寻找是否有某种方法可以直接查找偏移量,如果它会发生变化的话.

我正在使用PHP,但任何语言的解决方案都将受到赞赏.

MySQL解决方案也将工作,因为它将在MySQL中进行更优化.

php mysql timezone datetime datetimeoffset

6
推荐指数
1
解决办法
5955
查看次数

WCF DateTimeOffset兼容性

我有一个.NET WCF服务,其中包含一些采用DateTimeOffset的操作契约.这个想法是为了避免与夏令时和时区混淆.

但是我怀疑使用DateTimeOffset毕竟是一个好主意,因为它是相当非标准的,并且会对尝试连接的任何人造成麻烦,例如,Java应用程序或绑定到较旧.NET版本的.NET应用程序.

另一种方法是期望UTC DateTime,但这会带来某人忘记使用UTC时间并以本地时间调用服务的风险.我还可以期待当地时间DateTime,因为客户端将始终处于相同的时区,但这会在DST更改中留下一些微妙但经典的模糊性.

是否有人在服务界面中使用DateTimeOffset头痛故事,或者毕竟使用起来相对没有问题?

.net wcf web-services datetimeoffset

6
推荐指数
2
解决办法
4773
查看次数

DateTimeFormatter 的模式问题

我正在编写一个股票程序,它(到目前为止)通过这样的请求从“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不起作用。

java datetimeoffset java-8 java-time datetimeformatter

6
推荐指数
1
解决办法
2149
查看次数

MySQL /是否支持DATETIMEOFFSET?

我目前正在使用共享主机方案,我不确定它使用的是哪个版本的MySQL,但它似乎不支持DATETIMEOFFSET类型.

是否存在支持DATETIMEOFFSET的MySQL版本?或者是否计划将来实施?

mysql datetimeoffset

6
推荐指数
1
解决办法
5433
查看次数

将DateTimeOffset从Android发送到.NET Web API

我正在使用适用于Android的Azure移动应用SDK.

public class MyClass {
    public String Id;
    public String Code;
    public DateTimeOffset ClientCreatedAt;
}

MyClass myClass = new MyClass();
myClass.Id = "1234567890";
myClass.Code = "dfgdrvyet";
myClass.ClientCreatedAt = new DateTimeOffset(new Date());
Run Code Online (Sandbox Code Playgroud)

它使用如下:

MobileServiceSyncTable<MyClass> myClassSyncTable = _client.getSyncTable(MyClass.class);
ListenableFuture<MyClass> responseFuture = myClassSyncTable.insert(myClass);
Run Code Online (Sandbox Code Playgroud)

在插入时,将ClientCreatedAt其设置为null,当我调查insert语句时,它是库中没有序列化DatetimeOffset的Gson,具体来说,这一行:

JsonObject json = mClient.getGsonBuilder().create().toJsonTree(item).getAsJsonObject();
Run Code Online (Sandbox Code Playgroud)

当我替换DateTimeOffsetwith时Date,值被正确序列化.

所以,我的问题是:

  1. 我是否打算在Azure Mobile Apps中使用DateTimeOffset,如果是,那么使用它的正确方法是什么?
  2. 我可以强制Gson正确序列化DateTimeOffset吗?我查看了Gson Annotations,但没有什么可以帮助那里.我不确定我是否应该创建一个用于序列化和反序列化的getter和setter.

java android datetimeoffset gson azure-mobile-services

6
推荐指数
1
解决办法
675
查看次数