1. ホーム
  2. アンドロイド

Http グリニッジ標準時とミリ秒の相互変換 EEE, dd MMM y HH:mm:ss 'GMT'

2022-03-02 12:10:04
<パス

NoHttpオープンソースのアドレスです。 https://github.com/yanzhenjie/NoHttp

NoHttpの詳細なドキュメントが公開されました!知りたいことは全てそこにあります。

<ブロッククオート

著作権について この記事はZhenjie Yan氏のブログからの転載であることをご了承ください。 http://blog.yanzhenjie.com

前書き

  このブログを書いているのは、久しぶりに NoHttp フォーマットされたHttpレスポンスヘッダやリクエストヘッダのData関連フィールドに問題が発生したとき、結局アルゴリズムをまとめることにしました。
  の2つのコンセプトを明確にしています。
  1. グリニッジ標準時(出版局によってはグリニッジGreenwhichと呼ぶ)のフォーマット: "EEE, dd MMM y HH:MM:ss 'GMT'"
  2.ミリ秒のフォーマット。1464709616971


グリニッジ(EEE, dd MMM y HH:mm:ss 'GMT')のミリ秒への変換

public static final String FORMAT_HTTP_DATA = "EEE, dd MMM y HH:mm:ss 'GMT'";

public static final TimeZone GMT_TIME_ZONE = TimeZone.getTimeZone("GMT");

/**
 * Parsing the TimeZone of time in milliseconds.
 *
 * @param gmtTime GRM Time, Format such as: {@value #FORMAT_HTTP_DATA}.
 * @return The number of milliseconds from 1970.1.1.
 * @throws ParseException if an error occurs during parsing.
 */
public static long parseGMTToMillis(String gmtTime) throws ParseException {
    SimpleDateFormat formatter = new SimpleDateFormat(FORMAT_HTTP_DATA, Locale.US);
    formatter.setTimeZone(GMT_TIME_ZONE);
    Date date = formatter.parse(gmtTime);
    return date.getTime();
}

グリニッジ(EEE, dd MMM y HH:mm:ss 'GMT' )に変換されたミリ秒。

public static final String FORMAT_HTTP_DATA = "EEE, dd MMM y HH:mm:ss 'GMT'";

public static final TimeZone GMT_TIME_ZONE = TimeZone.getTimeZone("GMT");

/**
 * Parsing the TimeZone of time from milliseconds.
 *
 * @param milliseconds the number of milliseconds from 1970.1.1.
 * @return GRM Time, Format such as: {@value #FORMAT_HTTP_DATA}.
 */
public static String formatMillisToGMT(long milliseconds) {
    Date date = new Date(milliseconds);
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat(FORMAT_HTTP_DATA, Locale.US);
    simpleDateFormat.setTimeZone(GMT_TIME_ZONE);
    return simpleDateFormat.format(date);
}

1つのクラスHttpDateに統合

public final class HttpDateTime {

    public static final String FORMAT_HTTP_DATA = "EEE, dd MMM y HH:mm:ss 'GMT'";

    public static final TimeZone GMT_TIME_ZONE = TimeZone.getTimeZone("GMT");

    /**
     * Parsing the TimeZone of time in milliseconds.
     *
     * @param gmtTime GRM Time, Format such as: {@value #FORMAT_HTTP_DATA}.
     * @return The number of milliseconds from 1970.1.1.
     * @throws ParseException if an error occurs during parsing.
     */
    public static long parseGMTToMillis(String gmtTime) throws ParseException {
        SimpleDateFormat formatter = new SimpleDateFormat(FORMAT_HTTP_DATA, Locale.US);
        formatter.setTimeZone(GMT_TIME_ZONE);
        Date date = formatter.parse(gmtTime);
        return date.getTime();
    }

    /**
     * Parsing the TimeZone of time from milliseconds.
     *
     * @param milliseconds the number of milliseconds from 1970.1.1.
     * @return GRM Time, Format such as: {@value #FORMAT_HTTP_DATA}.
     */
    public static String formatMillisToGMT(long milliseconds) {
        Date date = new Date(milliseconds);
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(FORMAT_HTTP_DATA, Locale.US);
        simpleDateFormat.setTimeZone(GMT_TIME_ZONE);
        return simpleDateFormat.format(date);
    }

    /**
     * Returned the local number of milliseconds after 100.
     *
     * @return Long format time.
     */
    public static long getMaxExpiryMillis() {
        return System.currentTimeMillis() + 1000L * 60L * 60L * 24L * 365L * 100L;
    }

}

  最後の方法は、100年分のミリ秒の時間を求めるものですが、これを間違えた学生もいました。問題は、数字の後ろにLが付かないものがあり、intの限界を超えてしまうため、予想より小さな値が出てしまうことです。


Androidオープンソース・ネットワーキング・フレームワークNoHttpへようこそ:その https://github.com/yanzhenjie/NoHttp
オンライン・ライブ・ビデオとコードのダウンロードは http://pan.baidu.com/s/1miEOtwG