Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在moment.js中本地化日和月_Javascript_Momentjs - Fatal编程技术网

Javascript 在moment.js中本地化日和月

Javascript 在moment.js中本地化日和月,javascript,momentjs,Javascript,Momentjs,如何在moment.js中本地化当前日期和月份(不含年份)?我想要的正是moment().format('LL')的输出,但没有年份部分 考虑以下示例: moment().locale('tr').format('LL') // "1 Haziran 2017" moment().locale('en').format('LL') // "June 1, 2017" 我想要的是: moment().locale('tr').format('??') // "1 Haziran" moment(

如何在moment.js中本地化当前日期和月份(不含年份)?我想要的正是
moment().format('LL')
的输出,但没有年份部分

考虑以下示例:

moment().locale('tr').format('LL') // "1 Haziran 2017"
moment().locale('en').format('LL') // "June 1, 2017"
我想要的是:

moment().locale('tr').format('??') // "1 Haziran"
moment().locale('en').format('??') // "June 1"

是否只需要字符串表示?如果是这样,只修剪输出末尾的最后5个字符可能会更容易,如下所示:

var today = moment().locale('tr').format('LL') // "1 Haziran 2017"
today = today.substring(0, today.length - 5); // "1 Haziran"
这将在未来8000年内有效,因此不必担心未来几年会破坏它


您甚至可以进行更智能的正则表达式匹配,或者从字符串中删除所有带有“20XX”的内容。不过,这取决于您对it的使用情况,与其说是直接解决方案,不如说是一种黑客解决方案。

下面是一个如何工作的示例:

var d = moment().locale('tr');
console.log(d.format('D MMMM'));

jsiddle:

对于所有受支持地区的易出错解决方案,您需要使用
删除年份。替换
并检查是否有不必要的符号遗留:

函数getCurrDayAndMonth(区域设置){ var today=locale.format('LL'); 今天回来 .replace(locale.format('YYYY'),'')//删除年份 .replace(//\s\s+/g',)//删除双空格(如果有) .trim()//从起点和终点删除空格 .replace(/[БΓ]\./,'')//从RU/UK地区删除年份字母 .replace(/de$/,“”)//从PT中删除年份前缀 .replace(/b\.$/,“”)//从SE中删除年份前缀 .trim()//从起点和终点删除空格 .replace(/,$/g,);//从末尾删除逗号 } [af',ar dz',ar kw',ar ly',ar ma',ar sa',ar tn',ar',az',be',bg',bn',bo',br',bs',ca',cs',cv',cy',da',de at',de ch',de',dv el',en au en ca',en gb',en ie',en nz',eo es',es',et',eu fa',fi',fo',fr ca',fr ch',fr',fy',gd gl',gom latn he he hi hr',hu hu ch,‘hy am’、‘id’、‘is’、‘it’、‘ja’、‘jv’、‘ka’、‘kk’、‘km’、‘kn’、‘ko’、‘ky’、‘lb’、‘lo’、‘lt’、‘lv’、‘me’、‘mi’、‘mk’、‘ml’、‘mr’、‘ms my’、‘ms’、‘my’、‘nb’、‘ne’、‘nl be’、‘nl’、‘nl’、‘nn’、‘pa in’、‘pl’、‘pt-br’、‘pt-br’、‘pt’、‘pt’、‘pt’、‘ro’、‘ro,'tzm latn','tzm','uk','ur','uz latn','uz','vi','x-pseudo','yo','zh cn','zh hk','zh tw']{ console.log( localeName+':', getCurrDayAndMonth(矩().locale(localeName)); });
这是一个显而易见的解决方案,但我想避免它,因为我不知道
格式('LL')
到底是如何工作的。日期可能不会以年份结束,或者区域设置可以使用不同的数字系统。顺便说一下,是的,字符串表示就足够了:)啊,明白了。你想让它适用于所有语言吗?我建议转换ot语言环境,然后只选择内置格式的d和M。我只是浏览了一下源代码,我不相信有什么方法可以采用内置的区域设置格式,只删除其中的一部分(即年份)。您必须应用所需的格式(就像上面webbm所做的)
moment().locale('en')。format('D MMMM')
6月1日
。这绝对不是我想要的。请看一看我的例子。我想这是我能做的最好的了。谢谢你的回答!如果受“接受”重复问题的回答启发,请考虑“投票”。