我正在根据世界各地的时区建立会议日历.我的问题是如何在Javascript中从用户选择的日期添加或减去时区.
例如,在选择表单上,用户将从表单中选择日期:然后我会得到结果并转换为如下日期...
var ldSelectDate = new Date(document.form1.year.value,
document.form1.month.value,
document.form1.day.value);
Run Code Online (Sandbox Code Playgroud)
我想在这个对象中添加12午夜.
然后我读入一个XML,它在两个城市之间的字符串中获得时区差异:例如喀布尔的"+0430"或纽约的"-0400"(夏令时).这是基于GMT的.
然后我计算两个城市之间的时区差异:它将返回字符串"830".(我假设我必须将它作为日期对象返回?).我完成了这部分返回一个字符串.我正在使用字符串.
然后我想循环一整天的24小时,在午夜12点设置喀布尔然后循环.我很可能会想到这一点 - 也就是说,在循环时将日期设置为整个小时.
我的问题是从喀布尔无痛地减去"830",看看会议时间在纽约会是什么时候.
如果我可以从喀布尔时间减去小时和分钟,那将是理想的选择.我注意到有人在javascript中减去了小时数,但没有减去分钟数.顺便说一句,那篇文章对我不起作用.
我用没有分钟的字符串做了这个,但是我搞砸了会议记录.必须有一个更简单的方法.
我会采用本机Javascript或jQuery的解决方案.
同样,我需要在特定日期减去/添加小时和分钟的时区差异.
谢谢
我不能做这个工作 - 总是返回False.
我在这里想念什么?
DateTimeOffset parsedDate;
if ( DateTimeOffset.TryParseExact("2012-10-31 23:59:59", "YYYY-MM-dd HH:mm:ss"
, CultureInfo.InvariantCulture
, DateTimeStyles.None, out parsedDate) == false)
{
throw new ArgumentException("dateToPare", dateToParse);
}
Run Code Online (Sandbox Code Playgroud) 我们正在使用SQL Server 2008 R2作为后端在C#4中开发一个应用程序.在极少数情况下,SQL Server Compact 4也用于断开连接的客户端.我们想知道将日期/时间数据存储到这些数据库中的最佳方法是什么,以便:
我们主要关注的是保留每个记录事件的本地时间,但不会失去比较和排序从不同时区生成的事件的能力,因此具有不同的时间偏移.
我们已经考虑了datetimeoffset数据类型,因为它存储时间偏移,因为它很好地映射到.NET DateTimeOffset.但是,SQL Server Compact 4不支持它.另一种方法是从数据库中删除偏移信息并使用简单的datetime数据类型,以便数据库中的每个数据都被标准化,并且Compact的问题更少.然而,这引入了在用户看到数据之前需要以某种方式重建偏移信息的问题.
所以我的问题是,是否有关于如何在SQL Server中存储日期/时间值的最佳实践或指南,考虑到我们需要处理不同的时区,并使2008 R2和Compact 4之间的互操作性变得简单尽可能?
谢谢.
我有以下代码,它应该返回60的偏移量(显示目前在英国,我们在英国夏令时 - 即比格林威治标准时间早60分钟):
var info = TimeZoneInfo.FindSystemTimeZoneById("Greenwich Standard Time");
DateTimeOffset localServerTime = DateTimeOffset.Now;
double off = localServerTime.Offset.TotalMinutes;
return off;
Run Code Online (Sandbox Code Playgroud)
但是,它返回0.
有人可以帮我解决这个问题吗?
我正在将日期/日期时间字符串转换为OffsetDateTime并且我有日期时间格式,它可能具有这些值之一
yyyy-MM-dd, yyyy/MM/dd
Run Code Online (Sandbox Code Playgroud)
有时有或没有时间,我需要将其转换为OffsetDateTime.
我试过下面的代码
// for format yyyy-MM-dd
DateTimeFormatter DATE_FORMAT = new DateTimeFormatterBuilder().appendPattern("yyyy-MM-dd")
.parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
.parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)
.parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0)
.parseDefaulting(ChronoField.MILLI_OF_SECOND, 0)
.toFormatter();
Run Code Online (Sandbox Code Playgroud)
由于没有时间,我将其设置为默认值,但是当我尝试解析时
OffsetDateTime.parse("2016-06-06", DATE_FORMAT)
Run Code Online (Sandbox Code Playgroud)
它抛出错误就像
线程“main”中的异常 java.time.format.DateTimeParseException:无法解析文本“2016-06-06”:无法从 TemporalAccessor 获取 OffsetDateTime:{},ISO 解析为 java 类型的 2016-06-06T00:00 .time.format.Parsed 已解析
谁能帮我解决这个问题吗?
自从我使用 .NET 以来,我就一直在 .NET 和 SQL ServerDateTime数据类型中存储日期和时间数据。我最近意识到DateTimeOffset.NET 和 SQL Server 中存在这些类型。
该DateTimeOffset类型现在是否应该成为我使用和存储时间的默认数据类型?
如果没有,我什么时候会使用一个?
我创建了一个string 扩展方法,它将特定的转换string为DateTimeOffset. 我执行了以下方法:
public static DateTimeOffset? ConvertToDateTimeOffset(this string text)
{
DateTimeOffset date;
if (DateTimeOffset.TryParse(text, out date))
{
return date;
}
else
{
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
用这个字符串:
"2010-05-10".ConvertToDateTimeOffset()
Run Code Online (Sandbox Code Playgroud)
我想取回以下结果:
{2010. 05. 10. 0:00:00 +00:00}
Run Code Online (Sandbox Code Playgroud)
但我的执行方法调用的实际结果是(请注意+02:00):
{2010. 05. 10. 0:00:00 +02:00}
Run Code Online (Sandbox Code Playgroud)
我怎样才能消除这个时区问题?
基于此 Java 日期时间 - OffsetDateTime.format() 示例文章和DateTimeFormatter 的官方文档,我希望我的 OffsetDateTime 被序列化为自 UTC 以来2011-12-03T10:15:30+00:00偏移量的偏移量+00:00。
我无法让 OffsetDateTime 使用偏移量进行渲染,它总是只使用“Z”祖鲁语进行渲染。我究竟做错了什么?
这是Spring Boot 2.0.0.RELEASE,正如您在屏幕截图中看到的,我在类路径上有以下模块并注册了 objectMapper,尽管我认为这不是相对的,因为这个问题似乎是直接的使用 DateTimeFormatter,我的对象映射器只是使用我提供的格式化程序。
它确实有影响,因为正如您在第二个屏幕截图中看到的那样,当我指定BASIC_ISO_FORMAT它确实会产生不同的结果。
我确实spring.jackson.date-format= com.fasterxml.jackson.databind.util.ISO8601DateFormat在我的 application.properties 中设置了这个属性,但据我所知,这对 OffsetDateTime 没有影响,它只支持旧版 java 中的遗留 Date 对象。顺便说一下,改变这一点似乎没有预期的影响。
任何帮助,将不胜感激。
使用 BASIC_ISO_FORMAT ... 这确实有影响,所以我知道格式化程序正在做某事,我只是不清楚为什么 ISO_ZONED_DATE_TIME 没有按预期呈现。

this.objectMapper = objectMapperBuilder.build()
.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE)
.disable(SerializationFeature.INDENT_OUTPUT)
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.disable(SerializationFeature.WRITE_DATES_WITH_ZONE_ID);
SimpleModule simpleModule = new SimpleModule();
simpleModule.addSerializer(OffsetDateTime.class, new JsonSerializer<OffsetDateTime>() {
@Override
public void serialize(OffsetDateTime offsetDateTime, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException …Run Code Online (Sandbox Code Playgroud) 我有一些代码想要测试有效时间,出于某种原因,它适用于 PM 的日期,但不适用于 AM。
所以我采用与这种格式相对应的格式:
2018/6/1 下午 12:00:00
然而,出于某种原因,当它是 PM 时,这很好用,但是当我用 AM 替换它时,它就坏了。我接受它命中的可接受格式的格式是:
M/d/yyyy HH:mm:ss tt
下面没有说它是假的:
DateTimeOffset dateTimeResult;
var acceptableFormats = new string[] {
"yyyy-MM-dd'T'HH:mm:ss.FFFK",
"M/d/yyyy HH:mm:ss",
"MM/dd/yyyy HH:mm:ss",
"M/d/yyyy HH:mm:ss tt",
"MM/dd/yyyy HH:mm:ss tt",
"yyyy-MM-dd' 'HH:mm:ss.FFFK",
"yyyy-MM-dd'T'HH:mm:ssK",
"yyyy-MM-dd' 'HH:mm:ssK",
"yyyy-MM-dd'T'HH:mm:ss",
"yyyy-MM-dd' 'HH:mm:ss",
"yyyy-MM-dd'T'HH:mm",
"yyyy-MM-dd' 'HH:mm",
"yyyy-MM-dd'T'HH",
"yyyy-MM-dd' 'HH",
"yyyy-MM-dd",
"yyyy-MM-dd",
"yyyyMMdd",
"MM/dd/yyyy",
"M/d/yyyy",
"yyyy-MM",
"yyyy" };
DateTimeOffset dateTimeResult;
var timeOffset = DateTimeOffset.TryParseExact("6/1/2018 12:00:00 AM", acceptableFormats, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTimeResult);
Run Code Online (Sandbox Code Playgroud)
这个作品说的是真的:
DateTimeOffset dateTimeResult;
var acceptableFormats = new string[] { …Run Code Online (Sandbox Code Playgroud) 我正在开发一项返回 expires 标头的服务。该服务将跨不同时区工作。所以我们需要一种方法来返回 GMT 以外的其他时区。
我知道 http 标头必须遵循 RFC1123 标准日期格式。所以服务返回日期如下 -
2019 年 3 月 1 日星期五 15:00:00 GMT
我需要的是以以下格式返回日期。
2019 年 3 月 1 日星期五 15:00:00 +0530
这是 RFC1123 日期格式的有效日期吗?
datetimeoffset ×10
c# ×5
.net ×3
datetime ×2
timezone ×2
dst ×1
http ×1
java-8 ×1
java-time ×1
javascript ×1
jquery ×1
rfc1123 ×1
spring-boot ×1
sql-server ×1
tryparse ×1