toLocaleDateString 的相反方法

2023-11-29

为了创建一个尊重浏览器文化的字符串,我们可以这样做:

var myDate = new Date();
var myDateString = myDate.toLocaleDateString(myDate); //returns a string

这很好,因为如果我在葡萄牙,6 月 1 日,这将输出“01/06/2015”,而如果我在美国,它将输出“06/01/2015”。

现在我想要完全相反的东西。我想:

var myDateString = "01/06/2015"
var myDate = myDateString.toLocaleDate(); //it should return a Date

有什么建议么?


浏览器不知道用户认同什么“文化”,它只能访问各种格式字符串(日期、数字、货币、语言等)的区域设置。没有标准的 JavaScript API 可以访问这些设置。

浏览器确实可以访问区域设置,但是它们不能可靠地实现任何特定的格式Date.prototype.toLocaleString,因此不可能根据浏览器对系统设置的解释可靠地将日期字符串转换为日期对象。最后,无论如何都不能保证任何任意日期字符串都符合区域设置。

解析字符串的唯一可靠方法是指定特定格式。如果您指定了 d/m/y 并且用户输入 1/6/2015,您别无选择,只能相信他们已阅读并理解所需的格式并希望将其解释为 2015 年 6 月 1 日。没有其他选择。

解析特定格式的日期并不困难,例如解析 d/m/y 格式的字符串:

function parseDMY(s) {
  var b = s.split(/\D+/);
  return new Date(b[2], b[1]-1, b[0]);
}

如果要验证日期,则需要额外的一行:

function parseDMY(s) {
  var b = s.split(/\D+/);
  var d = new Date(b[2], b[1]-1, b[0]);
  return d && d.getMonth() == b[1]-1? d : new Date(NaN);
}

如果您想确保 2 位数年份被视为完整年份(大多数浏览器会将 1/1/03 转换为 1/1/1903),则还需要一行:

function parseDMY(s) {
  var b = s.split(/\D+/);
  var d = new Date(b[2], b[1]-1, b[0]);
  d.setFullYear(b[2]);
  return d && d.getMonth() == b[1]-1? d : new Date(NaN);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

toLocaleDateString 的相反方法 的相关文章

随机推荐

  • Opscode Chef 注册节点时请求实体太大

    我正在注册一个在运行列表中搜索其他节点属性的节点 问题是当节点信息太大而无法通过 HTTP 放在服务器上时 然后 Chef client 打印一条 FATAL Net HTTPServerException 413 Request Enti
  • 为什么 gets() 不消耗整行输入?

    我正在尝试使用gets 从用户那里获取一个字符串 但程序似乎直接传递过来gets 用户提供输入时不会有任何停顿 为什么是gets 什么也没做 char name 13 printf Profile name gets name printf
  • 模拟二元交叉(SBX)交叉运算符示例[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我在一个研究团队中工作 解决多目标工程问题 我专注于NSGA II算法 但现在我陷入困境 我需要了解 SBX 交叉如何与数值示例一起工作 以便我可以
  • 如何防止 Less 尝试编译 CSS calc() 属性?

    The Less我正在使用的编译器 橙色比特 and 无点1 3 0 5 正在积极翻译 body width calc 100 250px 1 5em into body width calc 151 5 这显然是不希望的 我想知道是否有一
  • 移动控件时阻止表单滚动

    我有一个打开自动滚动的表单 并且表单中有一个用户可编辑区域 用户可以调整控件大小或移动控件 移动控件时 如果它们移出窗体的工作区 则会显示滚动条 这是我的意图 现在 表单将自动向下滚动 因此当用户不释放鼠标时 控件将继续向下移动 这显然不是
  • 用值填充张量中的特定索引

    我是张量流初学者 我创建了这个张量 z tf zeros 20 2 tf float32 我想改变索引的值z 2 1 and z 2 2 to 1 0而不是零 我怎样才能做到这一点 你什么exactly无法询问有两个原因 z是一个常数张量
  • 多个模板中的 Twig Assetic 样式表

    我正在尝试将样式表添加到数组中 以便当树枝模板延伸到第二层和第三层时 聚合的样式将继续下去 这个主题是相关的跨继承模板组合资产资源 From 配置 yml 我做了一个全局数组mystyles这样我们就可以在渲染过程中 冒泡 时添加到必要的样
  • web.py 应用程序上的 Pytests 未覆盖方法代码

    首先 很抱歉 如果术语不是 100 正确 或者有些东西没有 100 有意义 我对 Web 应用程序开发和在堆栈溢出上发布的文章还很陌生 我有一个 web py 应用程序 需要使用 pytest 测试其功能并生成代码覆盖率报告pytest c
  • 如何找出哪个变量具有最大值

    if A gt B and C and D print A wins if B gt A and C and D print B wins 如何检查并查看哪个变量包含组中最大的整数 决定谁胜谁负 您可以测试每一项 if A gt B and
  • 如何离线安装 DoctrineFixturesBundle

    首先 由于我的 ISP 我无法使用 Composer 所以 我需要一种方法来安装DoctrineFixturesBundle手动 所以我开始从github 还有data fixtures捆 我在我的项目中创建这个文件夹结构 vendor d
  • SSE 的 EventSource 和 XMLHttpRequest 之间的区别

    我正在实现服务器发送事件应用程序逻辑 服务器端已经完成 现在正在处理客户端部分 在我看来 JS 正在使用 EventSource 对象 这看起来非常合乎逻辑 因为它就是为此而设计的 但它也有很多限制 只有 GET 请求 没有标头 没有数据
  • Datagramsocket:receive(...) 如何处理数据包的碎片

    我从我的教授那里了解到 使用 UDP 套接字发送的数据报包在较低层中会被分段 并且may作为多个数据包到达接收端 例如 如果我在数据报包中发送 1000 字节的数据 则在接收端might到达时 例如 2 字节 500 字节 12 字节等 因
  • 如何将图像从 Java Applet 发送到 JavaScript?

    我有一个正在生成图像的 Java Applet 最终 我想将图像数据插入数据库 因此我想将图像数据临时存储在包含小程序的页面上的表单字段中 我希望做到这一点而不在客户端计算机上存储图像文件 这一切都来自签名板 以下是一些应该从 sigObj
  • 如何使用 toJSON 更改序列化实体的属性名称?

    我想序列化一个属性 其名称与实体中的名称不同 Entity export class MyEntity This should be serialized with name column in JSON Column name strin
  • 如何更改列的堆叠顺序?

    使用 Bootstrap 3 我有一个非常简单的布局 例如 div class container div class row div class col sm 4 Header Content Left div div class col
  • 如何在CSS中使用边框的clip-path属性

    I have clip part达到 偷工减料 的效果 我想将背景更改为白色并使用绿色边框 问题是 当我将背景更改为白色时 角落是空的 如何在悬停时制作绿色边框角 test background red width 100px height
  • PHP 上次登录脚本[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我想知道一种好的 有效的方法来判断我的用户上次登录是多久前的事 在用户个人资料中 我希望
  • php通过socket编程传递c结构体数据

    如何制作一个需要对具有以下结构的linux C套接字服务器执行socket sendto的php套接字客户端 typedef struct UI2 todo char rz LNG RZ 1 char saId LNG SAT ID 1 c
  • 需要复杂数据排序 SQL Server 的帮助

    我需要对数据库中的复杂数据进行排序的帮助 假设我的数据存储在这样的表中 Description JCB Excavator ECU P N 728 35700 Geo Prism 1995 GEO ABS 16213899 GEO pump
  • toLocaleDateString 的相反方法

    为了创建一个尊重浏览器文化的字符串 我们可以这样做 var myDate new Date var myDateString myDate toLocaleDateString myDate returns a string 这很好 因为如