解析ISO 8601值24:00:00的日期失败。
我正在尝试从数据源分析日期(无法更改).它为我提供了ISO 8601格式的时间:2007-04-05T24:00. 在.NET中曾经无法将其作为有效时间解析. Wikipedia指出它应该是有效的格式. wikipedia iso iso 8601 示例来自 https://stackoverflow.com/a/35556188/645410 如果没有讨厌的字符串检查hack? 我该怎么做? 示例(fiddle: http://dotnetfiddle.net/ob7ezx ) var strDate = "2007-04-05T24:00"; Console.WriteLine(DateTime.Parse(strDate, null, DateTimeStyles.RoundtripKind)); 投掷: 日历中不支持字符串代表的日期时间 system.globalization.gregoriancalendar. 解决
0 2024-04-20
编程技术问答社区
将ISO8601格式的字符串转换成DateTime
我有以下ISO8601格式的日期时间字符串: 2016-03-28T16:07:00+0200 我想将其转换为c#DateTime对象,但是我正在使用的解析方法会引发异常. 目前我有一个:(不起作用) string format = "yyyy-MM-ddTHH:mm:ss+zzzz"; CultureInfo provider = CultureInfo.InvariantCulture; // Throws the exception: "String was not recognized as a valid DateTime." DateTime time = DateTime.ParseExact("2016-03-28T16:07:00+0200", format, provider); 如何使解析功能与字符串一起使用? 解决方案 尝试DateTime time = DateTime.Parse("2016-03-28T16:07:00+
0 2024-04-16
编程技术问答社区
如何在.Net中对ISO8601日期时间进行正式的正确解析?
关于ISO8601在.NET和C#中解析的问题和答案.但是,任何地方似乎都没有一个"确定的"答案,即一个正式正确的ISO8601解析器的答案,它可以正确解析ISO8601中的所有可能格式变体,并且会禁止非ISO8601变体. 这个答案是迄今为止最接近的匹配... 如何从ISO 8601格式创建.NET DateTime 解决方案 好的.让我们从您自己对ISO 8601上的限制开始: 您想要日期时间,所以所有仅导致时间,持续时间,年和年度的格式. 您想要一个日期时间,因此时区信息将成为"未指定"," UTC"或" local",而无需返回到同一时区. 您想要一个日期时间,因此失去精度超过100NS. 使我们拥有不到ISO 8601格式的一半以支持,并解决了模棱两可的情况,因为它在仅日期和仅段时间的含义之间是模棱两可的. 让我们从可以从DateTime.ParseExact上处理的人开始: DateTime.ParseExact(dateStrin
0 2024-04-15
编程技术问答社区
C#将日期时间对象转换为ISO 8601字符串
我正在尝试将DateTime对象转换为ISO8601字符串,但要保持错误的结果.我在Stackoverflow上环顾四周,但找不到正确的解决方案. 我从" 2017-06-26T20:45:00.070Z"的日期时间字符串开始,该纽顿夫妇从JSON中对其进行了序列化,并转换为C#等效于: 的DateTime对象 var theTime = new DateTime(2017, 6, 26, 20, 45, 00, 70, DateTimeKind.Utc); 现在,我需要将该时间转换回原始UTC格式字符串才能在另一种算法中使用它,但是我尝试的每一次转换都不会将其返回到原始字符串.不知道我在做什么错. 我尝试过: var newTime = theTime.UtcNow.ToString("o"); // returns "2017-06-26T00:00:00.0000000Z" var newTime2 = theTime.Date.ToUniversalT
0 2024-04-14
编程技术问答社区
将带有时区的ISO 8601解析为.NET数据时间
我有一个 iso 8601 格式的时间戳: YYYY-MM-DDThh:mm:ss[.nnnnnnn][{+|-}hh:mm] YYYY-MM-DDThh:mm:ss[{+|-}hh:mm] 示例: 2013-07-03T02:16:03.000+01:00 2013-07-03T02:16:03+01:00 如何使用正确的TimeZone将其解析到.NET Framework TimeZone? DateTime.TryParse不起作用,因为有关TimeZone的尾随信息. 解决方案 You should be able to format it using DateTimeOffset and the K自定义格式指定.然后,您可以根据需要将其转换为DateTime.示例代码: using System; using System.Globalization; class Test { static void Main()
0 2024-04-11
编程技术问答社区
如何解析和生成ISO 8601格式的DateTime对象
有此SOAP Web服务以以下格式向我发送DateTime对象 2016-03-29T12:20:35.093-05:00 那是2016年3月的第29天.小时:12:20:35.093(GMT-5). 我希望能够创建一个DateTime对象,例如: DateTime.Now 并以上述格式和逆操作获取字符串表示形式,从上面给出的字符串创建一个dateTime. 我尝试了以下内容以创建日期: new DateTime(2016, 3, 29, 12, 20, 35, 093, DateTimeKind.Utc) 但是,我看不到如何在那里指定GMT-5 ... 我不知道如何将日期时间转换为指定的字符串格式. 使用Nate的代码正在执行以下操作: var d = new DateTimeOffset(2016, 3, 29, 12, 20, 35, 93, TimeSpan.FromHours(-3)); FormatIso8601(
0 2024-04-11
编程技术问答社区
如何从ISO 8601格式创建一个.NET日期时间
我找到了如何将日期时间变成 iso 8601 格式如何在C#中进行反向. 我有2010-08-20T15:00:00Z,我想将其变成DateTime对象. 我可以自己分开字符串的各个部分,但这似乎已经为已经是国际标准的事情做了很多工作. 解决方案 此解决方案利用 dateTimestyles 它也与z. 一起使用 DateTime d2 = DateTime.Parse("2010-08-20T15:00:00Z", null, System.Globalization.DateTimeStyles.RoundtripKind); 这可以完美打印解决方案. 其他解决方案 尽管MSDN说" S"和" O"格式反映了标准,但它们似乎只能解析其有限的子集.特别是如果字符串包含时区规范,这是一个问题. (对于基本的ISO8601格式,也不会这样做,也不适用于精确格式 - 但这并不是您的情况.)这就是为什么我在解析ISO8601时使用自定义格式字符串的原因.目前
0 2024-04-10
编程技术问答社区
给定一个DateTime对象,我如何获得一个字符串格式的ISO 8601日期?
给定: DateTime.UtcNow 我如何获得一个 iso 8601 -compliant格式格式的字符串? 注意ISO 8601定义了许多类似格式.我正在寻找的特定格式是: yyyy-MM-ddTHH:mm:ssZ 解决方案 注明读者的注释:一些评论者指出了此答案中的一些问题(特别与第一个建议有关).有关更多信息,请参阅评论部分. // Do not use this DateTime.UtcNow.ToString("yyyy-MM-ddTHH\\:mm\\:ss.fffffffzzz", CultureInfo.InvariantCulture); 使用自定义日期时间格式,这给您一个类似于 的日期 2008-09-22T13:57:31.2311892-04:00 . 另一种方法是: // Prefer this, to avoid having to manually define a framework-provide
0 2024-04-10
编程技术问答社区
从时间戳中提取时间
我正在尝试从ISO8601时间戳提取时间部分. 例如.从以下TimStamp "0001-01-01T17:45:33"我想提取此部分"17:45:33". 解决方案 您有一些选择. 可以说,您将其放在一个称为string的可变字符阵列中. 现在,如果您知道时间总是在字符串的末尾,那么您就可以做得很容易: #define TIMEWIDTH 8 #include #include int main() { const char string[] = {"0001-01-01T17:45:33\0"}; unsigned int strlength = strlen(string); char temp[TIMEWIDTH + 1]; // add one for null character printf("%s\n", string); strncpy(
0 2024-04-07
编程技术问答社区
ISO 8601的C语言周数
我试图在我的PC上安装使用C. Mingw的ISO8601周号. GCC版本为5.3.0.您可以在下面看到我的代码. strftime 对指定符"%v"不起作用.但是它可以与指定符"%w"一起工作.但这不是我想要的.我需要ISO 8601格式的一周数. 我尝试了2个不同的在线C编译器的代码,它们都可以正常工作.我怀疑我的PC上的编译器配置不佳.谁能告诉我我在做什么错?任何帮助将不胜感激. 这是我的代码: #include #include #include int main () { time_t timep; struct tm * time_inf; char buff [80]; time ( &timep ); time_inf = localtime ( &timep ); time_inf->tm_year = 2008 - 1900;
2 2024-04-07
编程技术问答社区
严格的JSON $dates可以在MongoDB查询中使用吗?
我正在尝试使用mongodb的严格的JSON表示BSON . 我希望它能在MongoDB Shell(v2.4.3) 中工作 这是我尝试的... 设置:创建一个新文档,其中at 2020年1月1日的日期 > db.myTimes.insert({"at": new Date("2020-01-01")}) 使用非图案查询日期> 2010,没问题: > db.myTimes.find({"at": {"$gt": new Date("2010-01-01")}}) { "_id" : ObjectId([snipped]), "at" : ISODate("2020-01-01T00:00:00Z") } 使用严格的JSON查询,但是... no Dice > db.myTimes.find({"at": {"$gt": {"$date":"2010-01-01T00:00:00Z"}}}) > db.myTimes.find({"at": {"$
0 2024-04-04
编程技术问答社区
OS X上的`date`命令没有ISO 8601`-I`选项?
在bash脚本中,我想在 iso 8601 格式(最好是,最好是格式) UTC),看来这应该像date -I: 一样简单 http://ss64.com/bash/date.html ,但这似乎对我的Mac不起作用: $ date -I date: illegal option -- I usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... [-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format] 确实,man date不列出此选项. 有人知道为什么这是什么,还是其他任何(简单)的方法,我可以以ISO 8601格式打印日期?谢谢! 解决方案 您可以使用 date "+%Y-%m-%d" 或完全 iso-8601符合日期,使用以下格式之一:/p> date -u +"%Y-%
0 2024-03-28
编程技术问答社区
ISO 8601在AVRO模式中
是否可以使用日期时间字段,例如" 2019-08-24T14:15:22.000Z",in avro? 我正在寻找这样的sth: { "name": "myDateField", "type": "string", "logicalType": "timestamp-micros" } 但是,在这种情况下,logicalType似乎被忽略了,并且可以在该字段中设置任何随机字符串. 解决方案 逻辑类型的想法是您使用的库将为您进行转换. 假设您有这样的架构: { "type": "record", "name": "root", "fields": [ { "name": "mydate", "type": { "type": "int", "logicalType": "date"
12 2024-03-21
编程技术问答社区
VBScript ISO8601
在vbscript中,FormatDateTime是否有ISO 8601支持? 如果没有,我该如何编写此类功能? 例如: Response.Write FormatAsISO8601(#05/04/2011#) Function FormatAsISO8601(datetime) ... End Function 解决方案 这是我从Chris的类所需的特定代码,更优化: Public Function ToIsoDateTime(datetime) ToIsoDateTime = ToIsoDate(datetime) & "T" & ToIsoTime(datetime) & CurrentTimezone End Function Public Function ToIsoDate(datetime) ToIsoDate = CStr(Year(datetime)) & "-" & StrN2(Month(datetime)
2 2024-03-16
编程技术问答社区
如何让JSON.NET将日期/时间序列化为ISO 8601?
我有一个Web API应用程序,该应用程序将JSON返回可能不使用Microsoft Technologies的消费者.当我的控制器以JSON返回DateTime属性的对象时,它以此格式序列的日期: 2017-03-15T00:00:00-04:00 这给消费者带来了一些头痛,因为他们期望它以ISO 8601格式.一些研究告诉我,JSON.NET现在使用ISO 8601(默认情况下)(我使用的是9.0.1).当我运行此代码... Clipboard.Copy(JsonConvert.SerializeObject(DateTime.Now)); ...我明白了: 2017-03-15T09:10:13.8105498-04:00 Wikipedia在表达全日期和时间时显示为有效的ISO 8601格式: 2017-03-15T11:45:42+00:00 2017-03-15T11:45:42Z 20170315T114542Z 但是,我获得的输出
2 2024-03-16
编程技术问答社区
按ISO 8601日期排序阵列
如何按日期对此数组进行排序(ISO 8601)? var myArray = new Array(); myArray[0] = { name:'oldest', date:'2007-01-17T08:00:00Z' } myArray[1] = { name:'newest', date:'2011-01-28T08:00:00Z' } myArray[2] = { name:'old', date:'2009-11-25T08:00:00Z' } 游乐场: https://jsfiddle.net/4tuzt/4tuzt/ 解决方案 在词典上排序: @kdbanman指出, iso8601 EM> 是为词典形式设计的.因此,ISO8601字符串表示形式可以像其他任何字符串一样排序,这将给出预期的顺序. '2007-01-17T08:00:00Z'
0 2024-03-04
编程技术问答社区
如何在序列化时向JSON添加类型信息?
Angular需要在许多地方进行Date对象,而JSON包含日期的字符串表示. 我想添加包含日期值的一系列属性: class Foo { public int IntProp {get;set;} public DateTime? Prop1 {get;set;} public DateTime Prop2 {get;set;} public Bar Bar {set;set;} } class Bar { public DateTime Prop {get;set;} public IEnumerable Dates {get;set;} } 然后应该像这样序列化 foo: { "IntProp": 1, "Prop1": "...", "Prop2": "...", "Bar": { "Prop": "..." }, "
4 2024-02-24
编程技术问答社区
Angular2 DatePipe处理ISO 8601日期(管道'*'的无效参数'DatePipe')?
我刚刚尝试在我的 angular2 应用程序中使用简单的date app: Registered: {{user.registered | date:'shortDate'}} 我遇到的错误是: Invalid argument '2016-03-28T07:25:40.824Z' for pipe 'DatePipe' in [{{user && user.registered | date:'shortDate' }} in UserDialog@16:57] 我确实在此组件和其他一些组件之间共享了用户模型(在此处最小): export class User { public registered: Date; } 我从后端获取用户数据作为JSON,它是ISO 8601: 2016-03-28T07:26:01.202Z . . 当我使用自己的自定义管道时,它可以(例如bellow). import {Pipe, PipeTransform}
0 2024-02-21
编程技术问答社区
DateTimeParseException at index 0 with ThreeTenABP
我正在尝试使用三端纳布(Threetenabp)解析时间字符串(因为我必须支持最小SDK 19).我认为字符串是ISO 8601: 20200117T172638.000Z 我得到以下例外: org.threeten.bp.format.DateTimeParseException: Text '20200117T172638.000Z' could not be parsed at index 0 我的代码: Instant instant = Instant.parse("20200117T172638.000Z"); long time = instant.getEpochSecond(); 任何帮助.预先感谢. 解决方案 这有点棘手. DateTimeFormatter instantFormatter = DateTimeFormatter.ofPattern("uuuuMMdd'T'HHmmss.SSSX");
2 2024-02-09
编程技术问答社区
安卓系统中的ISO 8601字符串到日期/时间对象
我在标准 iso 8601 格式中,包含从一个返回的日期/时间返回的日期这样的Web服务: String dtStart = "2010-10-15T09:27:37Z" 如何将其放入时间或日期之类的对象?我最初想以不同的格式输出它,但需要以后再做其他事情(即可能以不同的格式使用). 欢呼 解决方案 String dtStart = "2010-10-15T09:27:37Z"; SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); try { Date date = format.parse(dtStart); System.out.println(date); } catch (ParseException e) { e.printStackTrace(); } 这就是您要寻找的.有现有帖子关于此问题.
6 2024-01-27
编程技术问答社区