tianyun 2 years ago
parent
commit
4f569adcfb
1 changed files with 146 additions and 0 deletions
  1. 146 0
      simple-demo/time_change.html

+ 146 - 0
simple-demo/time_change.html

@@ -0,0 +1,146 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <title>时间单位转换器</title>
+</head>
+<body>
+<h1>时间单位转换器</h1>
+
+<label for="input-number">输入数字:</label>
+<input type="number" id="input-number"><br>
+
+<label for="input-unit">输入单位:</label>
+<input type="radio" name="input-unit" value="year">年
+<input type="radio" name="input-unit" value="month">月
+<input type="radio" name="input-unit" value="day">日
+<input type="radio" name="input-unit" value="hour">时
+<input type="radio" name="input-unit" value="minute">分
+<input type="radio" name="input-unit" value="second" checked>秒
+<input type="radio" name="input-unit" value="millisecond">毫秒
+<input type="radio" name="input-unit" value="microsecond">微秒
+<input type="radio" name="input-unit" value="nanosecond">纳秒
+<br>
+
+<label for="output-unit">输出单位:</label>
+<input type="radio" name="output-unit" value="year">年
+<input type="radio" name="output-unit" value="month">月
+<input type="radio" name="output-unit" value="day">日
+<input type="radio" name="output-unit" value="hour">时
+<input type="radio" name="output-unit" value="minute">分
+<input type="radio" name="output-unit" value="second" checked>秒
+<input type="radio" name="output-unit" value="millisecond">毫秒
+<input type="radio" name="output-unit" value="microsecond">微秒
+<input type="radio" name="output-unit" value="nanosecond">纳秒
+<br>
+
+<label for="output-value">转换结果:</label>
+<input type="text" id="output-value" readonly>
+
+<script>
+    function truncateDecimals(num, decimalPlaces) {
+        if (typeof num !== 'number') {
+            throw new Error('The input value must be a number.');
+        }
+
+        if (typeof decimalPlaces !== 'number' || decimalPlaces < 0) {
+            throw new Error('The decimalPlaces value must be a non-negative number.');
+        }
+
+        const factor = Math.pow(10, decimalPlaces);
+        const truncatedNum = Math.trunc(num * factor) / factor;
+
+        return truncatedNum;
+    }
+
+    function convertUnits() {
+        var inputValue = document.getElementById("input-number").value;
+        var inputUnit = document.querySelector('input[name="input-unit"]:checked').value;
+        var outputUnit = document.querySelector('input[name="output-unit"]:checked').value;
+        var outputValue;
+
+        // 进行单位转换的逻辑
+        // 将输入的时间转换为纳秒
+        var inputValueInNs;
+        switch (inputUnit) {
+            case "year":
+                inputValueInNs = inputValue * 31536000000000000; // 年到纳秒的转换率
+                break;
+            case "month":
+                inputValueInNs = inputValue * 2592000000000000; // 月到纳秒的转换率
+                break;
+            case "day":
+                inputValueInNs = inputValue * 86400000000000; // 日到纳秒的转换率
+                break;
+            case "hour":
+                inputValueInNs = inputValue * 3600000000000; // 时到纳秒的转换率
+                break;
+            case "minute":
+                inputValueInNs = inputValue * 60000000000; // 分到纳秒
+                // 分到纳秒的转换率
+                break;
+            case "second":
+                inputValueInNs = inputValue * 1000000000; // 秒到纳秒的转换率
+                break;
+            case "millisecond":
+                inputValueInNs = inputValue * 1000000; // 毫秒到纳秒的转换率
+                break;
+            case "microsecond":
+                inputValueInNs = inputValue * 1000; // 微秒到纳秒的转换率
+                break;
+            case "nanosecond":
+                inputValueInNs = inputValue; // 纳秒单位不需要转换
+                break;
+            default:
+                inputValueInNs = 0;
+        }
+
+        // 将纳秒转换为输出单位
+        switch (outputUnit) {
+            case "year":
+                outputValue = inputValueInNs / 31536000000000000; // 纳秒到年的转换率
+                break;
+            case "month":
+                outputValue = inputValueInNs / 2592000000000000; // 纳秒到月的转换率
+                break;
+            case "day":
+                outputValue = inputValueInNs / 86400000000000; // 纳秒到日的转换率
+                break;
+            case "hour":
+                outputValue = inputValueInNs / 3600000000000; // 纳秒到时的转换率
+                break;
+            case "minute":
+                outputValue = inputValueInNs / 60000000000; // 纳秒到分的转换率
+                break;
+            case "second":
+                outputValue = inputValueInNs / 1000000000; // 纳秒到秒的转换率
+                break;
+            case "millisecond":
+                outputValue = inputValueInNs / 1000000; // 纳秒到毫秒的转换率
+                break;
+            case "microsecond":
+                outputValue = inputValueInNs / 1000; // 纳秒到微秒的转换率
+                break;
+            case "nanosecond":
+                outputValue = inputValueInNs; // 纳秒单位不需要转换
+                break;
+            default:
+                outputValue = 0;
+        }
+
+        document.getElementById("output-value").value = truncateDecimals(outputValue,2);
+    }
+
+    // 在输入框值或单位选择发生改变时触发转换
+    document.getElementById("input-number").addEventListener("input", convertUnits);
+    var inputUnits = document.querySelectorAll('input[name="input-unit"]');
+    inputUnits.forEach(function (inputUnit) {
+        inputUnit.addEventListener("change", convertUnits);
+    });
+    var outputUnits = document.querySelectorAll('input[name="output-unit"]');
+    outputUnits.forEach(function (outputUnit) {
+        outputUnit.addEventListener("change", convertUnits);
+    });
+</script>
+</body>
+</html>