繁体   English   中英

如何获得与 Joda DateTime 后端兼容的完整 HTML 时区选择

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM