我想在.net中解析字符串2017-06-02T00:00:00 + 05:30并获取日期时间值为2017-06-02:00:00:00。表示服务器正在将此日期转换为东部时区。但我想把它存放在给定的时区。任何帮助表示赞赏。
答案 0 :(得分:1)
由于您的输入包含时区偏移,并且您似乎要求DateTime
.Kind
== DateTimeKind.Unspecified
,因此您无法使用DateTime.Parse
或{{ 1}},至少在没有改变输入字符串的情况下。自定义格式化程序(DateTime.ParseExact
,K
等)和zzz
没有任何组合可以为您提供未指定类型的DateTimeStyles
。他们总是会接受偏移,并假设您需要本地时间或UTC。
所以,你有一些选择。
在解析之前更改字符串,以截断偏移量。
DateTime
解析为string s = "2017-06-02T00:00:00+05:30";
DateTime dt = DateTime.ParseExact(s.Substring(0, 19),
"yyyy-MM-dd'T'HH:mm:ss",
CultureInfo.InvariantCulture);
,然后选择DateTimeOffset
属性。
DateTime
就个人而言,我更喜欢选项2.您甚至可以考虑在整个过程中使用string s = "2017-06-02T00:00:00+05:30";
DateTimeOffset dto = DateTimeOffset.ParseExact(s,
"yyyy-MM-dd'T'HH:mm:sszzz",
CultureInfo.InvariantCulture);
DateTime dt = dto.DateTime;
。它通常更适合大多数场景。
另请注意,在以此格式解析字符串时,不变文化优于本地文化,因为定义此格式的ISO-8601规范始终使用公历日历系统。如果您使用其他文化,则可以解释不同日历系统中的数字,这可能会导致错误。
答案 1 :(得分:0)
我相信使用DateTimeOffset可以满足您的需求。
<script>
var item = document.getElementsByName("InsertRecordItemID")[0].value;
<!-- right here I need an if (item !== null) to then run the change function but that if it's not null to not run the change function{ -->
$("[name='cbParamVirtual9']").change(function(){
var itid = document.getElementsByName("cbParamVirtual9")[0].value;
document.getElementsByName("InsertRecordItemID")[0].value = itid;
}
);
</script>
答案 2 :(得分:-1)
Project -> Clean...