Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >moment.js反向.fromNow()

moment.js反向.fromNow()
EN

Stack Overflow用户
提问于 2013-05-25 23:35:40
回答 3查看 2.4K关注 0票数 3

所以我和moment.js一起工作。

我看到您可以使用moment().fromNow()将日期转换为人类友好的格式;

有没有办法做相反的事情呢?

例如,我想将这个--> "2周前“转换为普通的日期格式或UNIX时间戳。

我仔细查看了文档,但什么也找不到。任何方向都会有帮助,谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-25 23:54:02

根据输入字符串的复杂程度/不同程度,您可以这样做:

代码语言:javascript
运行
AI代码解释
复制
//parse out the number and the duration

var inputString = "2 weeks ago";

var myRegExp = /^(\d+)\s(\w+)\sago$/;

var results = myRegExp.exec(inputString);

var num = results[1];
var duration = results[2];

moment().subtract(duration,num).toString() //or whatever format you prefer

注意:这将适用于格式为“数字持续时间之前”的输入字符串。

希望这能有所帮助!

票数 3
EN

Stack Overflow用户

发布于 2016-04-01 14:09:05

在某些情况下,.fromNow()会返回类似于"30+ days ago“的字符串。上面的解决方案中提供的正则表达式不能正确地解析它。

下面是处理这种情况的最新正则表达式:

代码语言:javascript
运行
AI代码解释
复制
var myRegExp = /^(\d+)\+?\s(\w+)\sago$/;
票数 0
EN

Stack Overflow用户

发布于 2020-08-24 10:22:52

下面是我用来在当前moment.js语言环境中反转它的方法。我在几个地区进行了测试,它应该适用于每个地区,但可能不是。

将最后两个.toString()函数更改为.valueOf()以获取数值。

Moment现在实际上没有所有语言的周名称数据,所以如果找不到值,函数将假定字符串是周。

一些语言使用翻译函数,而不是内置的值,因此脚本也不会在这些函数上工作!如果您手动指定您的语言数据,那么它应该可以工作。

代码语言:javascript
运行
AI代码解释
复制
//test en locale
moment.locale("en");
console.log(reversefromNow("5 days ago"));
console.log(reversefromNow("in 5 days"));
//test ja locale
moment.locale("ja");
console.log(reversefromNow("5 日前"));
console.log(reversefromNow("5 日後"));

function reversefromNow(input) {
    let relativeLocale = JSON.parse(JSON.stringify(moment.localeData()._relativeTime));
    let pastfutureObject = {
        future: relativeLocale.future,
        past: relativeLocale.past
    };
    delete relativeLocale.future;
    delete relativeLocale.past;

    //detect if past or future
    let pastfuture;
    for (const [key, value] of Object.entries(pastfutureObject)) {
        if (input.indexOf(value.replace("%s", "")) != -1) {
            pastfuture = key;
        }
    }

    //detect the time unit
    let unitkey;
    for (const [key, value] of Object.entries(relativeLocale)) {
        if (input.indexOf(value.replace("%d", "")) != -1) {
            unitkey = key.charAt(0);
        }
    }

    //if its not in the data, then assume that it is a week
    if (unitkey == null) {
        unitkey = "w";
    }

    const units = {
        M: "month",
        d: "day",
        h: "hour",
        m: "minute",
        s: "second",
        w: "week",
        y: "year"
    };
    //Detect number value 
    const regex = /(\d+)/g;
    let numbervalue = input.match(regex) || [1];
    //Add if future, subtract if past
    if (pastfuture == "past") {
        return moment().subtract(numbervalue, units[unitkey]).valueOf();
    } else {
        return moment().add(numbervalue, units[unitkey]).valueOf();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16754882

复制
相关文章
object.finalize_object的equals方法
finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法。
全栈程序员站长
2022/10/02
6850
object.finalize_object的equals方法
前端基础-HTML(object标签)
object标签 <object type="application/x-shockwave-flash" data="line.swf" width="500" height="500"></obj
cwl_java
2020/04/07
5410
前端基础-HTML(object标签)
java object toarray,Object[] toArray()
java.util.LinkedList.toArray()方法以适当的顺序(从第一个元素到最后一个元素)返回包含此列表中所有元素的数组。此方法充当基于数组的API和基于集合的API之间的桥梁。
全栈程序员站长
2022/08/28
6610
Object类常用方法
方法签名:public String toString() ① 默认情况下,toString()返回的是“对象的运行时类型 对象的hashCode值(16进制)" ② 在进行String与其它类型数据的连接操作时,自动调用toString()方法
CODER-V
2023/03/04
3550
Object 有啥方法
这个 Object 指的是所有对象的父亲 package java.lang; 下的 object 类
韩旭051
2021/04/14
5870
Object 有啥方法
Java Map的containsKey(Object key)和containsValue(Object value)方法
public void testContainsKeyOrValue(){ Scanner sc = new Scanner(System.in); //Key System.out.println("请输入要查询的学生id:"); String id = sc.next(); System.out.println("你输入的学生id为:"+id+",在学生映射表中是否存在"+ students.con
JavaEdge
2018/05/16
2.1K0
js Object seal方法
接受一个对象作为参数,并返回相同的对象。作为参数传递的对象发生了变化,它现在是一个不接受新属性的对象。不能添加新属性,也不能删除现有属性,但可以更改现有属性。
IT工作者
2022/01/05
3.5K0
Object对象
Object对象是JavaScript中两个顶层对象之一,提供方法供直接调用以及原型链继承调用。
WindRunnerMax
2020/08/27
2.3K0
如何重写object虚方法
在 C# 中 Object 是所有类的基类,所有的结构和类都直接或间接的派生自它。前面这段话可以说所有的 C# 开发人员都知道,但是我相信其中有一部分程序员并不清楚甚至不知道我们常用的 ToString 、 Equals 和 GetHashCode 虚方法都来自于 Object 类,并且我们可以对它们进行重写。重写这三个虚方法可以说在项目开发中经常用到,只不过大部分开发人员并未留意这三个虚方法可以重写,而是自己写方法来实现。 下面我就来具体讲解一下它们三个应该怎么重写。在这里我需要说明的是本篇文章会大量涉及到设计规范和设计要求,代码只是作为辅助理解的形式出现,因此文章中的所有代码将会以代码段的形式出现。
喵叔
2020/09/08
8250
Object.keys和Object.values
使用Object.keys()或者Object.values()获取循环变量,渲染的时候根据循环变量获取值。Object.keys()函数返回索引(不仅仅是数字),Object.values()函数返回值。
从入门到进错门
2018/08/21
5500
"reason":"object mapping for [] tried to parse field [] as object, but found a concrete value"
enclosure_infor这个字段的mapping如下,是个nested类型的:
IT云清
2019/01/22
6.6K0
Java Object 类方法解析
我们都知道 Java 语言是面向对象的编程语言,而面向对象编程以类作为基本单元。我们也都知道,在 Java 中,所有的类都将 Object 类作为父类,而 Object 类本身提供了一些基础但是很有用的方法,这些方法我们在日常工作中经常会用到,因此熟悉它们的原理和用法对我们的开发会有很大的帮助,下面我们来一起看一些这些方法:
指点
2019/01/18
6660
Java Object 类方法解析
面试:Object 方法与原理
clone 方法的用法是对象的浅拷贝和深拷贝,clone是浅拷贝是对基本类型的值传递,对引用类型进行引用类型般的拷贝。深拷贝并拷贝对象的所有属性,并拷贝属性所指向的动态分配内存。实现深拷贝的方法有:1. 重写clone方法,对其内部的引用类型再进行clone. 2.通过序列化实现深拷贝,将拷贝的对象写入内存的字节流中,然后在读出转换为对象。新对象和原对象不存在地址的共享,所以实现深拷贝。3. 可以采用反射来实现深拷贝,迭代的依次拿到字段,并给新对象赋值。
Tim在路上
2020/08/04
3490
Object类
String toString() 返回该对象的字符串表示 返回该对象的字符串表示
默默的成长
2022/11/07
5720
Object类
Object划分
这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这
后端码匠
2021/02/18
7070
Object 有哪些常用方法
Object 是所有类的父类,任何类都默认继承 Object。Object 类到底实现了哪些方法?
Li_XiaoJin
2022/06/10
8030
Object类有哪些方法?
类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。
黑洞代码
2021/01/14
1.4K0
Object类有哪些方法?
LINQ to Object
LinQ to Object是指对随意IEnumerable或Ienumerable<T>集合使用linq查询.它可取代查询不论什么可枚举的集合.如List<T>,Array或Dictionary<K,V>.
全栈程序员站长
2022/07/13
1.3K0
LINQ to Object
TypeError: object()
对于上面这个错误,很容易迷惑我们,因为这个错误信息没有很明确的指出,到底是哪段代码除了问题。那这个错误是怎么产生的了,请听我细细道来。
py3study
2020/01/06
1.1K0
点击加载更多

相似问题

bootstrap:未捕获TypeError: Object [object Object]没有方法'tooltip','typeahead‘

40

TypeError: Object [ object ],[object Object]没有方法查找

30

jQuery/ #<Object>:Uncaught #<Object>:Object #<Object>没有“悬停”方法

12

Ajaxui标签:未捕获TypeError: Object [object Object]没有方法' tabs‘

23

Object [Object array]或[Object object]没有方法'then‘

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档