【问题标题】:Display date in roman numerals以罗马数字显示日期
【发布时间】:2013-10-13 05:11:49
【问题描述】:

我需要使用 jquery 或 javascript 在我的网页上显示当前日期,听起来很简单吧?

但是我希望日期以罗马数字显示(d/m/y 格式)。例如:13/10/2013 显示为 XIII.X.MMXIII

我已经尝试了几天,但我尝试的一切都行不通。我对 jquery 和 javascript 的了解相当有限,我只知道如何进行正常的约会。像这样:

<script type="text/javascript">
    <!--
    var currentTime = new Date()
    var month = currentTime.getMonth() + 1
    var day = currentTime.getDate()
    var year = currentTime.getFullYear()
    document.write(month + " . " + day + " . " + year)
    //-->
  </script>

如果有人能帮我用罗马数字显示日期,将不胜感激。

谢谢。

【问题讨论】:

标签: javascript


【解决方案1】:

使用此问题Convert a number into a Roman Numeral in javaScript 中讨论的罗马数字转换器之一。 比如http://blog.stevenlevithan.com/archives/javascript-roman-numeral-converter的那个:

function romanize (num) {
    if (!+num)
        return false;
    var digits = String(+num).split(""),
        key    = ["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM",
                  "","X","XX","XXX","XL","L","LX","LXX","LXXX","XC",
                  "","I","II","III","IV","V","VI","VII","VIII","IX"],
        roman  = "",
        i      = 3;
    while (i--)
        roman = (key[+digits.pop() + (i * 10)] || "") + roman;
    return Array(+digits.join("") + 1).join("M") + roman;
}

那么你可以这样做:

var currentTime  = new Date();
var strRomanDate = romanize(currentTime.getMonth() + 1) + " . " + 
                   romanize(currentTime.getDate())      + " . " +
                   romanize(currentTime.getFullYear()) + 1; 

【讨论】:

    【解决方案2】:
        var currentTime = new Date()
        var month = currentTime.getMonth() + 1
        var day = currentTime.getDate()
        var year = currentTime.getFullYear()
        document.write(toRoman(month) + " . " + toRoman(day) + " . " + toRoman(year))
    
    function toRoman(num) {
        var listOfNum = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1];
        var listOfRoman = ['M', 'CM', 'D', 'CD', "C", 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']
    
        var numToRoman = '';
        for (let i = 0; i < listOfNum.length; i++) {
            while (num >= listOfNum[i]) {
                numToRoman += listOfRoman[i];
                num -= listOfNum[i];
            }
        }
        return numToRoman;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多