[英]How to obtain a complete HTML timezone selection that is compatible with a Joda DateTime backend
JodaTime DateTimeZone
class 提供getAvailableIDs
方法来列出 Java 平台提供的时区标识符。 是否有一个简单的 HTML select 标签和列出兼容时区标识符的选项?
HTML 标准中没有这样的标签。 您必须在后端生成列表或使用可用的前端库之一(例如https://momentjs.com/timezone/ )。 在后端生成可以保证标识符是兼容的。
生成的 HTML 太大,无法在此处发布,但以下实用程序会生成所需的 HTML select 和选项标签...
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import org.joda.time.DateTimeZone;
public class DateTimeUtils {
/**
* Prevents the construction of instances of this utility class which has only static methods.
*/
private DateTimeUtils() {
}
/**
* Displays the timezone identifiers provided by the system.
*/
public static void listAvailableIDs() {
final Set<String> availableIDs = DateTimeZone.getAvailableIDs();
final List<String> sortedAvailableIDs = new ArrayList<>();
sortedAvailableIDs.addAll(availableIDs);
Collections.sort(sortedAvailableIDs);
for (final String sortedAvailableID : sortedAvailableIDs) {
System.out.println(sortedAvailableID);
}
}
/**
* Generates an HTML select element for the timezone identifiers accepted by Joda DateTime on Java 15.
*/
public static void generateHTMLTimezoneSelect() {
final Set<String> availableIDs = DateTimeZone.getAvailableIDs();
final List<String> sortedAvailableIDs = new ArrayList<>();
sortedAvailableIDs.addAll(availableIDs);
Collections.sort(sortedAvailableIDs);
final StringBuilder stringBuilder = new StringBuilder();
stringBuilder
.append("<label for=\"timezone\">Select your timezone:</label>\n")
.append("<select name=\"timezone\">\n");
for (final String sortedAvailableID : sortedAvailableIDs) {
stringBuilder
.append(" <option value=\"")
.append(sortedAvailableID)
.append("\">")
.append(sortedAvailableID)
.append("</option>\n");
}
stringBuilder.append("</select>\n");
System.out.println(stringBuilder.toString());
}
/**
* Generates an initialized String array for the timezone identifiers accepted by Joda DateTime on Java 15.
*/
public static void generateTimezoneIDArray() {
final Set<String> availableIDs = DateTimeZone.getAvailableIDs();
final List<String> sortedAvailableIDs = new ArrayList<>();
sortedAvailableIDs.addAll(availableIDs);
Collections.sort(sortedAvailableIDs);
final StringBuilder stringBuilder = new StringBuilder();
stringBuilder
.append(" private static final String[] TIMEZONE_IDS = {\n");
for (final String sortedAvailableID : sortedAvailableIDs) {
stringBuilder
.append(" \"")
.append(sortedAvailableID)
.append("\",\n");
}
stringBuilder.setLength(stringBuilder.length() - 2);
stringBuilder.append("\n };\n");
System.out.println(stringBuilder.toString());
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.