当前位置: 首页 > 面试题库 >

如何发送不带时区的AngularStrap datepicker值?

谢墨竹
2023-03-14
问题内容

我想知道是否有可能使用AngularStrap的datepicker而不保留用户的语言环境的时区信息。在我们的应用程序中,我们要处理具有到期日期的Contract对象。

添加或编辑合同对象时,有一个日期选择器字段用于选择日期。发生以下情况:

  1. 用户选择日期(例如2013-10-24)
  2. Angular将javascript日期对象绑定到ng-model字段
  3. 绑定的日期对象位于用户的时区(例如GMT + 3)
  4. 用户提交表格
  5. 使用Angular的$ http服务将日期发送到服务器

在步骤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只增加或减少。 我可以有实体,允许我发送一些我想要的值吗?