用法语设置JavaScript日期

时间:2016-10-21 21:41:00

标签: javascript date parsing localization formatting

我根本不认识JS,但我需要使用一些代码,使用下面的格式将当前日期显示为法语。

示例:

  • 假设我们是2016年10月21日,它应该显示“21èmejourdu mois d'octobre”。
  • 假设我们是2016年12月25日,它应该显示“25èmejourdu moisdedécembre”。
  • 假设我们“2016年8月1日,它应该显示”1er jour du mois d'août“。

在法国,我们使用的是月数:

  • 1 jour。
  • 2 ème至31 ème jour。

在法国,我们正在使用几个月:

  • de janvier
  • defévrier
  • de mars
  • de avril
  • de mai
  • de juin
  • de juillet
  • D'AOUT
  • de septembre
  • D'OCTOBRE
  • de novembre
  • dedécembre

我在互联网上找不到任何东西......你有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

我不懂法语,但以下内容应该让你开始:



function frenchDate(date) {
  // Array of month names
  var months = ['de janvier', 'de février', 'de mars', 'de avril', 'de mai', 'de juin', 'de juillet',
                'd´août', 'de septembre', 'd´octobre', 'de novembre', 'de décembre'];
  // Get the day number from the date
  var dayNum = date.getDate();
  // Work out which ordinal to use
  var ord = dayNum == 1? 'er jour du mois ' : 'éme jour du mois ';
  // Build the string and return it
  return dayNum + ord + months[date.getMonth()];
}

document.write(frenchDate(new Date()) + '<br>');

for (var d=1, m=0, y=2016; m<12; d++,m++) {
  document.write(d + '/' + (m+1) + '/' + y + ' : ' +
                 frenchDate(new Date(2016,m,d)) + '<br>');
}
&#13;
body {
  font-family: geneva, sans-serif;
 }
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我担心你必须亲自实施它,但为了让它开始,我建议你看看moment.js,这可能是一个不错的起点。

您可以使用[]转义字符串,将您想要的部分添加到基本格式中,例如:moment()。format(&#34; Do [hello!this is escaped!] YYYY&#34;)

    function convertDate( date ) {

        // "Do" automatically adds "er", but not "ème"
        var day_part = ( date.getDate() > 1 ) ? "ème" : "";

        // I don't speak french so I assume the following:
        // d': avril, août, octobre (4, 8 ,10 respectively)
        // de: other months
        var month_part = ( [ 4, 8, 10 ].includes( date.getMonth() +1 ) ) ? "d'" : "de";

        var f = "Do["+ day_part +" jour du mois "+ month_part +"] MMMM";

        return moment( date ).format( f );
    }