我想知道是否有可能使用AngularStrap的datepicker而不保留用户的语言环境的时区信息。在我们的应用程序中,我们要处理具有到期日期的Contract对象。
添加或编辑合同对象时,有一个日期选择器字段用于选择日期。发生以下情况:
在步骤5中,日期将转换为UTC格式。所选日期为格林尼治标准时间+3 2013-10-24(午夜),但UTC转换将日期更改为2013-10-23的晚上9点。
我们如何在整个过程中阻止转换或使用UTC日期?我们不希望合同的日期根据用户的本地时区更改。相反,我们希望该日期始终为2013-10-24,无论是哪个时区。
我们当前的解决方案是对AngularStrap库进行少量更改,以使日期在发送到服务器时不会更改。
如果我们可以在服务器中获得用户选择的时区,则可以在那里进行另一次转换,但是服务器没有该信息。
所有想法表示赞赏!
问题不是AngularStrap。它只是javascript日期如何工作以及JSON如何格式化它们以进行传输的方式。当您将JavaScript日期对象转换为JSON字符串时,它会将字符串格式化为UTC。
例如,我在犹他州,现在是2013-10-24的07:41。如果我创建一个新的javascript日期并将其打印到控制台,它将显示:
Thu Oct 24 2013 07:41:19 GMT-0600 (MDT)
如果我将同一日期定为字符串(使用JSON.stringify(date)
,则会得到:
"2013-10-24T13:41:47.656Z"
您看到的不是我当前的时区,而是UTC。因此,当表单从javascript对象转换为JSON字符串时,转换就发生在表单发送到服务器之前。
最简单的方法是在将日期发送到服务器之前,将日期更改为您自己选择的字符串。因此,不必让JSON将日期更改为UTC(假设您不在乎一天中的时间),您可以执行以下操作:
var dateStrToSend = $scope.date.getUTCFullYear() + '-' + ($scope.date.getUTCMonth() + 1) + '-' + $scope.date.getUTCDate();
这将为您提供一个看起来像基于UTC的字符串,'2013-10-24'
然后您可以将其发送到服务器,而不是包含时间信息的JSON格式。希望有帮助。
更新:正如@Matt Johnson所说,有两种方法可以做到。您说:How could we prevent the conversion, or use UTC dates during the whole process?
。如果要使用UTC,请使用我上面的解释。如果您只想“防止转换”,则可以使用以下方法:
var dateStrToSend = $scope.date.getFullYear() + '-' + ($scope.date.getMonth() + 1) + '-' + $scope.date.getDate();
我发送JSON文件(现在从邮递员)的身体是这样的: 控制器上的方法是: 我犯了个错误- 如何解决这个问题?
想改进这个问题吗 通过编辑此帖子,添加详细信息并澄清问题。 我需要在URL中使用日期,因此日期不能包含连字符、破折号或冒号等符号:。 我认为是唯一合适的格式,但问题是它是UTC格式,但我需要它在其他时区。 是否有类似20220615T160543 2:00的内容,其中2:00部分表示与UTC的时区偏移? 如果是,我可以从ZonedDateTime对象中打印出来吗? 我目前拥有的对象是 提前感谢!
问题内容: 问题: 如果一个表单输入具有名称,如何使用Javascript发送表单? 背景: 我正在使用隐藏的HTML表单将用户重定向到另一个页面。我不能在(隐藏的)输入上更改名称,因为另一页在另一台服务器上,并且输入必须完全相同。我的HTML表单如下所示: 我今天使用以下javascript行自动发送表单: 但是,由于一个输入的名称是“提交”(不能是其他名称,否则另一台服务器将无法处理该请求),
如何区分未发送的值和空值?如何检测客户端是否发送了空字段或跳过字段?
返回我女巫是错误的。 但接下来的查询如下: 我看对日期
我找不到只发送一些标量值和指标的能力! 仪表只允许标记时间点。 通过调用存储函数生成一个值。 cn只增加或减少。 我可以有实体,允许我发送一些我想要的值吗?