|
@@ -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>
|