婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > golang的時區(qū)和神奇的time.Parse的使用方法

golang的時區(qū)和神奇的time.Parse的使用方法

熱門標(biāo)簽:湛江crm外呼系統(tǒng)排名 不封卡外呼系統(tǒng) 地圖標(biāo)注免費定制店 宿遷便宜外呼系統(tǒng)代理商 上海極信防封電銷卡價格 仙桃400電話辦理 鄭州智能語音電銷機(jī)器人價格 重慶慶云企業(yè)400電話到哪申請 寧波語音外呼系統(tǒng)公司

時區(qū)

先寫一段測試代碼:

const TIME_LAYOUT = "2006-01-02 15:04:05"

func parseWithLocation(name string, timeStr string) (time.Time, error) {
 locationName := name
 if l, err := time.LoadLocation(locationName); err != nil {
  println(err.Error())
  return time.Time{}, err
 } else {
  lt, _ := time.ParseInLocation(TIME_LAYOUT, timeStr, l)
  fmt.Println(locationName, lt)
  return lt, nil
 }
}
func testTime() {
 fmt.Println("0. now: ", time.Now())
 str := "2018-09-10 00:00:00"
 fmt.Println("1. str: ", str)
 t, _ := time.Parse(TIME_LAYOUT, str)
 fmt.Println("2. Parse time: ", t)
 tStr := t.Format(TIME_LAYOUT)
 fmt.Println("3. Format time str: ", tStr)
 name, offset := t.Zone()
 name2, offset2 := t.Local().Zone()
 fmt.Printf("4. Zone name: %v, Zone offset: %v\n", name, offset)
 fmt.Printf("5. Local Zone name: %v, Local Zone offset: %v\n", name2, offset2)
 tLocal := t.Local()
 tUTC := t.UTC()
 fmt.Printf("6. t: %v, Local: %v, UTC: %v\n", t, tLocal, tUTC)
 fmt.Printf("7. t: %v, Local: %v, UTC: %v\n", t.Format(TIME_LAYOUT), tLocal.Format(TIME_LAYOUT), tUTC.Format(TIME_LAYOUT))
 fmt.Printf("8. Local.Unix: %v, UTC.Unix: %v\n", tLocal.Unix(), tUTC.Unix())
 str2 := "1969-12-31 23:59:59"
 t2, _ := time.Parse(TIME_LAYOUT, str2)
 fmt.Printf("9. str2:%v,time: %v, Unix: %v\n", str2, t2, t2.Unix())
 fmt.Printf("10. %v, %v\n", tLocal.Format(time.ANSIC), tUTC.Format(time.ANSIC))
 fmt.Printf("11. %v, %v\n", tLocal.Format(time.RFC822), tUTC.Format(time.RFC822))
 fmt.Printf("12. %v, %v\n", tLocal.Format(time.RFC822Z), tUTC.Format(time.RFC822Z))

 //指定時區(qū)
 parseWithLocation("America/Cordoba", str)
 parseWithLocation("Asia/Shanghai", str)
 parseWithLocation("Asia/Beijing", str)
}
testTime()

輸出:

0. now:  2018-09-19 19:06:07.3642781 +0800 CST m=+0.005995601
1. str:  2018-09-10 00:00:00
2. Parse time:  2018-09-10 00:00:00 +0000 UTC
3. Format time str:  2018-09-10 00:00:00
4. Zone name: UTC, Zone offset: 0
5. Local Zone name: CST, Local Zone offset: 28800
6. t: 2018-09-10 00:00:00 +0000 UTC, Local: 2018-09-10 08:00:00 +0800 CST, UTC: 2018-09-10 00:00:00 +0000 UTC
7. t: 2018-09-10 00:00:00, Local: 2018-09-10 08:00:00, UTC: 2018-09-10 00:00:00
8. Local.Unix: 1536537600, UTC.Unix: 1536537600
9. str2:1969-12-31 23:59:59,time: 1969-12-31 23:59:59 +0000 UTC, Unix: -1
10. Mon Sep 10 08:00:00 2018, Mon Sep 10 00:00:00 2018
11. 10 Sep 18 08:00 CST, 10 Sep 18 00:00 UTC
12. 10 Sep 18 08:00 +0800, 10 Sep 18 00:00 +0000
America/Cordoba 2018-09-10 00:00:00 -0300 -03
Asia/Shanghai 2018-09-10 00:00:00 +0800 CST
cannot find Asia/Beijing in zip file C:\Go\/lib/time/zoneinfo.zip

從以上代碼的測試結(jié)果可以得出幾點:

  • time.Now 得到的當(dāng)前時間的時區(qū)跟電腦的當(dāng)前時區(qū)一樣。
  • time.Parse 把時間字符串轉(zhuǎn)換為Time,時區(qū)是UTC時區(qū)。
  • 不管Time變量存儲的是什么時區(qū),其Unix()方法返回的都是距離UTC時間:1970年1月1日0點0分0秒的秒數(shù)。
  • Unix()返回的秒數(shù)可以是負(fù)數(shù),如果時間小于1970-01-01 00:00:00的話。
  • Zone方法可以獲得變量的時區(qū)和時區(qū)與UTC的偏移秒數(shù),應(yīng)該支持夏令時和冬令時。
  • time.LoadLocation可以根據(jù)時區(qū)名創(chuàng)建時區(qū)Location,所有的時區(qū)名字可以在$GOROOT/lib/time/zoneinfo.zip文件中找到,解壓zoneinfo.zip可以得到一堆目錄和文件,我們只需要目錄和文件的名字,時區(qū)名是目錄名+文件名,比如"Asia/Shanghai"。中國時區(qū)名只有"Asia/Shanghai"和"Asia/Chongqing",而沒有"Asia/Beijing"。
  • time.ParseInLocation可以根據(jù)時間字符串和指定時區(qū)轉(zhuǎn)換Time。
  • 感謝中國只有一個時區(qū)而且沒有夏令時和冬令時,可怕的美國居然有6個時區(qū),想想都可怕。

神奇的time.Parse

一開始使用time.Parse時很不習(xí)慣,因為非常奇怪的layout參數(shù)。
除了golang自帶定義的layout:

const (
 ANSIC  = "Mon Jan _2 15:04:05 2006"
 UnixDate = "Mon Jan _2 15:04:05 MST 2006"
 RubyDate = "Mon Jan 02 15:04:05 -0700 2006"
 RFC822  = "02 Jan 06 15:04 MST"
 RFC822Z  = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone
 RFC850  = "Monday, 02-Jan-06 15:04:05 MST"
 RFC1123  = "Mon, 02 Jan 2006 15:04:05 MST"
 RFC1123Z = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone
 RFC3339  = "2006-01-02T15:04:05Z07:00"
 RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"
 Kitchen  = "3:04PM"
 // Handy time stamps.
 Stamp  = "Jan _2 15:04:05"
 StampMilli = "Jan _2 15:04:05.000"
 StampMicro = "Jan _2 15:04:05.000000"
 StampNano = "Jan _2 15:04:05.000000000"
)

還可以自定義layout,比如:

"2006-01-02 15:04:05"

網(wǎng)上基本上都在傳說這個日子是golang項目開始創(chuàng)建的時間,為了紀(jì)念生日才這樣設(shè)計,其實這真是無稽之談瞎扯淡。
網(wǎng)上文章沒有找到說的比較清楚的,幸好有源碼,打開time.Parse的源碼看了一下,發(fā)現(xiàn)這個設(shè)計很好很科學(xué)。
解析layout的主要代碼在nextStdChunk方法中:

// nextStdChunk finds the first occurrence of a std string in
// layout and returns the text before, the std string, and the text after.
func nextStdChunk(layout string) (prefix string, std int, suffix string) {
 for i := 0; i  len(layout); i++ {
  switch c := int(layout[i]); c {
  case 'J': // January, Jan
   if len(layout) >= i+3  layout[i:i+3] == "Jan" {
    if len(layout) >= i+7  layout[i:i+7] == "January" {
     return layout[0:i], stdLongMonth, layout[i+7:]
    }
    if !startsWithLowerCase(layout[i+3:]) {
     return layout[0:i], stdMonth, layout[i+3:]
    }
   }

  case 'M': // Monday, Mon, MST
   if len(layout) >= i+3 {
    if layout[i:i+3] == "Mon" {
     if len(layout) >= i+6  layout[i:i+6] == "Monday" {
      return layout[0:i], stdLongWeekDay, layout[i+6:]
     }
     if !startsWithLowerCase(layout[i+3:]) {
      return layout[0:i], stdWeekDay, layout[i+3:]
     }
    }
    if layout[i:i+3] == "MST" {
     return layout[0:i], stdTZ, layout[i+3:]
    }
   }

  case '0': // 01, 02, 03, 04, 05, 06
   if len(layout) >= i+2  '1' = layout[i+1]  layout[i+1] = '6' {
    return layout[0:i], std0x[layout[i+1]-'1'], layout[i+2:]
   }

  case '1': // 15, 1
   if len(layout) >= i+2  layout[i+1] == '5' {
    return layout[0:i], stdHour, layout[i+2:]
   }
   return layout[0:i], stdNumMonth, layout[i+1:]

  case '2': // 2006, 2
   if len(layout) >= i+4  layout[i:i+4] == "2006" {
    return layout[0:i], stdLongYear, layout[i+4:]
   }
   return layout[0:i], stdDay, layout[i+1:]

  case '_': // _2, _2006
   if len(layout) >= i+2  layout[i+1] == '2' {
    //_2006 is really a literal _, followed by stdLongYear
    if len(layout) >= i+5  layout[i+1:i+5] == "2006" {
     return layout[0 : i+1], stdLongYear, layout[i+5:]
    }
    return layout[0:i], stdUnderDay, layout[i+2:]
   }

  case '3':
   return layout[0:i], stdHour12, layout[i+1:]

  case '4':
   return layout[0:i], stdMinute, layout[i+1:]

  case '5':
   return layout[0:i], stdSecond, layout[i+1:]

  case 'P': // PM
   if len(layout) >= i+2  layout[i+1] == 'M' {
    return layout[0:i], stdPM, layout[i+2:]
   }

  case 'p': // pm
   if len(layout) >= i+2  layout[i+1] == 'm' {
    return layout[0:i], stdpm, layout[i+2:]
   }

  case '-': // -070000, -07:00:00, -0700, -07:00, -07
   if len(layout) >= i+7  layout[i:i+7] == "-070000" {
    return layout[0:i], stdNumSecondsTz, layout[i+7:]
   }
   if len(layout) >= i+9  layout[i:i+9] == "-07:00:00" {
    return layout[0:i], stdNumColonSecondsTZ, layout[i+9:]
   }
   if len(layout) >= i+5  layout[i:i+5] == "-0700" {
    return layout[0:i], stdNumTZ, layout[i+5:]
   }
   if len(layout) >= i+6  layout[i:i+6] == "-07:00" {
    return layout[0:i], stdNumColonTZ, layout[i+6:]
   }
   if len(layout) >= i+3  layout[i:i+3] == "-07" {
    return layout[0:i], stdNumShortTZ, layout[i+3:]
   }

  case 'Z': // Z070000, Z07:00:00, Z0700, Z07:00,
   if len(layout) >= i+7  layout[i:i+7] == "Z070000" {
    return layout[0:i], stdISO8601SecondsTZ, layout[i+7:]
   }
   if len(layout) >= i+9  layout[i:i+9] == "Z07:00:00" {
    return layout[0:i], stdISO8601ColonSecondsTZ, layout[i+9:]
   }
   if len(layout) >= i+5  layout[i:i+5] == "Z0700" {
    return layout[0:i], stdISO8601TZ, layout[i+5:]
   }
   if len(layout) >= i+6  layout[i:i+6] == "Z07:00" {
    return layout[0:i], stdISO8601ColonTZ, layout[i+6:]
   }
   if len(layout) >= i+3  layout[i:i+3] == "Z07" {
    return layout[0:i], stdISO8601ShortTZ, layout[i+3:]
   }

  case '.': // .000 or .999 - repeated digits for fractional seconds.
   if i+1  len(layout)  (layout[i+1] == '0' || layout[i+1] == '9') {
    ch := layout[i+1]
    j := i + 1
    for j  len(layout)  layout[j] == ch {
     j++
    }
    // String of digits must end here - only fractional second is all digits.
    if !isDigit(layout, j) {
     std := stdFracSecond0
     if layout[i+1] == '9' {
      std = stdFracSecond9
     }
     std |= (j - (i + 1))  stdArgShift
     return layout[0:i], std, layout[j:]
    }
   }
  }
 }
 return layout, 0, ""
}

可以發(fā)現(xiàn)layout的所有代表年月日時分秒甚至?xí)r區(qū)的值都是互斥不相等的。

比如年份:短年份06,長年份2006,
月份:01,Jan,January
日:02,2,_2
時:15,3,03
分:04, 4
秒:05, 5

因為都不相等所以通過遍歷layout就可以switch case解析出每個區(qū)塊的意義和在字符串中的位置,這樣輸入對應(yīng)格式的時間字符串就可以順利解析出來。
這樣layout也可以自定義,而且順序任意,只要符合下列每個區(qū)塊定義的規(guī)則即可,
代碼中的注釋就是規(guī)則寫法:

const (
 _      = iota
 stdLongMonth    = iota + stdNeedDate // "January"
 stdMonth          // "Jan"
 stdNumMonth         // "1"
 stdZeroMonth         // "01"
 stdLongWeekDay         // "Monday"
 stdWeekDay          // "Mon"
 stdDay           // "2"
 stdUnderDay         // "_2"
 stdZeroDay          // "02"
 stdHour     = iota + stdNeedClock // "15"
 stdHour12          // "3"
 stdZeroHour12         // "03"
 stdMinute          // "4"
 stdZeroMinute         // "04"
 stdSecond          // "5"
 stdZeroSecond         // "05"
 stdLongYear    = iota + stdNeedDate // "2006"
 stdYear          // "06"
 stdPM     = iota + stdNeedClock // "PM"
 stdpm           // "pm"
 stdTZ     = iota    // "MST"
 stdISO8601TZ         // "Z0700" // prints Z for UTC
 stdISO8601SecondsTZ       // "Z070000"
 stdISO8601ShortTZ        // "Z07"
 stdISO8601ColonTZ        // "Z07:00" // prints Z for UTC
 stdISO8601ColonSecondsTZ      // "Z07:00:00"
 stdNumTZ          // "-0700" // always numeric
 stdNumSecondsTz        // "-070000"
 stdNumShortTZ         // "-07" // always numeric
 stdNumColonTZ         // "-07:00" // always numeric
 stdNumColonSecondsTZ       // "-07:00:00"
 stdFracSecond0         // ".0", ".00", ... , trailing zeros included
 stdFracSecond9         // ".9", ".99", ..., trailing zeros omitted

 stdNeedDate = 1  8    // need month, day, year
 stdNeedClock = 2  8    // need hour, minute, second
 stdArgShift = 16     // extra argument in high bits, above low stdArgShift
 stdMask  = 1stdArgShift - 1 // mask out argument
)

時區(qū):

時區(qū)使用:MST
時區(qū)偏移使用-0700或者Z0700等等。
下面是一個使用時區(qū)的例子,Z0700比較特殊,當(dāng)輸入時間直接使用Z時就直接代表UTC時區(qū)。

func testTimeParse() {
 t, _ := time.Parse("2006-01-02 15:04:05 -0700 MST", "2018-09-20 15:39:06 +0800 CST")
 fmt.Println(t)
 t, _ = time.Parse("2006-01-02 15:04:05 -0700 MST", "2018-09-20 15:39:06 +0000 CST")
 fmt.Println(t)
 t, _ = time.Parse("2006-01-02 15:04:05 Z0700 MST", "2018-09-20 15:39:06 +0800 CST")
 fmt.Println(t)
 t, _ = time.Parse("2006-01-02 15:04:05 Z0700 MST", "2018-09-20 15:39:06 Z GMT")
 fmt.Println(t)
 t, _ = time.Parse("2006-01-02 15:04:05 Z0700 MST", "2018-09-20 15:39:06 +0000 GMT")
 fmt.Println(t)
}

輸出:
2018-09-20 15:39:06 +0800 CST
2018-09-20 15:39:06 +0000 CST
2018-09-20 15:39:06 +0800 CST
2018-09-20 15:39:06 +0000 UTC
2018-09-20 15:39:06 +0000 GMT

還有疑問的可以看看go自帶的測試?yán)樱篏o/src/time/example_test.go

到此這篇關(guān)于golang的時區(qū)和神奇的time.Parse的使用方法的文章就介紹到這了,更多相關(guān)golang的時區(qū)和time.Parse內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • golang 定時任務(wù)方面time.Sleep和time.Tick的優(yōu)劣對比分析
  • 解決Golang time.Parse和time.Format的時區(qū)問題
  • 解決golang時間字符串轉(zhuǎn)time.Time的坑
  • 對Golang中的runtime.Caller使用說明
  • Golang中的time.Duration類型用法說明
  • golang time包做時間轉(zhuǎn)換操作
  • golang xorm及time.Time自定義解決json日期格式的問題
  • golang time常用方法詳解

標(biāo)簽:物業(yè)服務(wù) 儋州 海南 西雙版納 青海 遼寧 電子產(chǎn)品 安康

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《golang的時區(qū)和神奇的time.Parse的使用方法》,本文關(guān)鍵詞  golang,的,時區(qū),和,神奇,time.Parse,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《golang的時區(qū)和神奇的time.Parse的使用方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于golang的時區(qū)和神奇的time.Parse的使用方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久国产剧场电影| 亚洲h在线观看| 日本不卡免费在线视频| 中文字幕二三区不卡| 亚洲男人的天堂av| 欧美乱熟臀69xxxxxx| 国内精品久久久久影院薰衣草 | 欧美日本国产视频| 国产成人在线色| 欧美午夜免费电影| 日韩精品一区二区三区视频在线观看 | 色偷偷成人一区二区三区91| 麻豆精品国产91久久久久久| 国产精品18久久久久久久久久久久 | 久久看人人爽人人| 91麻豆精品国产综合久久久久久| 99视频有精品| 国产福利不卡视频| 国产一区二区三区在线观看免费视频| 日韩国产精品久久久| 久久人人超碰精品| 国产精品久久久久影院色老大| 欧美老人xxxx18| 91国产免费看| 美腿丝袜亚洲色图| 午夜精品久久久久久| 香蕉久久夜色精品国产使用方法| 久久机这里只有精品| 91国在线观看| 欧美少妇bbb| 91免费观看在线| 成人国产在线观看| 粉嫩av亚洲一区二区图片| 久久精品国产亚洲a| 五月天欧美精品| 男女男精品视频网| 精品国产一二三| 久久蜜桃av一区精品变态类天堂 | 国产精品网站在线播放| 26uuuu精品一区二区| 久久亚洲私人国产精品va媚药| 91精品国产91久久久久久最新毛片| 91精品办公室少妇高潮对白| 色婷婷av一区二区三区之一色屋| 91视频国产资源| 欧美日本乱大交xxxxx| 日韩一区二区影院| 色婷婷国产精品综合在线观看| 老司机精品视频导航| 国产综合久久久久影院| 国产中文一区二区三区| 成人av免费网站| 精品夜夜嗨av一区二区三区| 中文在线免费一区三区高中清不卡| 久久精品欧美一区二区三区不卡 | 国产在线精品免费av| 国产精品综合av一区二区国产馆| 亚洲一区二区美女| 老司机精品视频导航| 国产成人精品免费在线| 色综合久久精品| 欧美一区二区三区视频在线| 欧美一区午夜视频在线观看 | 欧美美女一区二区在线观看| 不卡视频在线观看| 色婷婷香蕉在线一区二区| 欧美三级视频在线观看| 日韩区在线观看| 欧美激情一区在线观看| 最新热久久免费视频| 亚洲精品视频在线观看网站| 乱一区二区av| 成人免费观看av| 欧美一区二区视频在线观看2022| 欧美一区二区大片| 成人18视频日本| 日韩精品一区二区三区swag| 日本一区二区成人在线| 亚洲成人午夜影院| 成人性视频免费网站| 99久久亚洲一区二区三区青草| 亚洲欧美国产毛片在线| 日本视频在线一区| 99久久国产综合精品色伊| 一本一本久久a久久精品综合麻豆| 成人午夜看片网址| 欧美一区二区三区四区视频| 国产精品成人免费精品自在线观看| 亚洲午夜精品一区二区三区他趣| 国产成人亚洲综合色影视| 欧美一级欧美三级| 亚洲精品欧美专区| 成人一二三区视频| 日韩欧美激情在线| 亚洲午夜精品在线| 亚洲三级久久久| 国产suv一区二区三区88区| 在线综合亚洲欧美在线视频| 亚洲一区二区三区四区的| 波多野结衣亚洲一区| 久久久久免费观看| 中文字幕在线视频一区| 国产精品99久久久| 国产传媒欧美日韩成人| 欧美日韩一区二区三区四区| 成人免费在线播放视频| 国产乱子伦视频一区二区三区| 欧美日韩精品一区二区三区 | 国产精品一区在线观看乱码| 国产成人精品免费一区二区| 欧美电影免费观看高清完整版在| 91视频在线看| 国产美女精品一区二区三区| 日韩精品三区四区| 中文字幕一区二区三区在线观看| 91精品福利在线一区二区三区 | 国内精品国产成人国产三级粉色| 国产精品进线69影院| 国产精品资源站在线| 亚洲国产电影在线观看| 欧美三级韩国三级日本一级| 成人黄色小视频| 久久精品国产亚洲5555| 日韩美女主播在线视频一区二区三区 | 欧美国产综合色视频| 国产精品一区二区三区四区| 欧美在线免费播放| 首页国产丝袜综合| 欧日韩精品视频| 亚洲va韩国va欧美va精品| 亚洲欧美国产77777| 国产精品乱人伦| 久久精品亚洲精品国产欧美| 欧美成人艳星乳罩| 91精品啪在线观看国产60岁| 国产精品三级电影| 精品久久国产老人久久综合| 欧美在线观看禁18| 大尺度一区二区| 国产真实乱偷精品视频免| 亚洲视频你懂的| 综合网在线视频| 成人欧美一区二区三区| 亚洲欧洲成人av每日更新| 国产精品的网站| 日韩美女视频19| 亚洲精品国产高清久久伦理二区| 亚洲人一二三区| 亚洲一二三专区| 午夜精品福利一区二区蜜股av| 午夜电影久久久| 日韩激情中文字幕| 久久精工是国产品牌吗| 狠狠色综合播放一区二区| 国产一区二区三区| 国产不卡视频一区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 日韩午夜激情av| 91超碰这里只有精品国产| 欧美日韩一区三区| 欧美一区二区日韩| 久久久久国产精品麻豆| 国产精品欧美久久久久无广告| 日韩一区欧美小说| 亚洲国产视频a| 久久福利视频一区二区| 国产精品亚洲综合一区在线观看| 国产ts人妖一区二区| 91免费观看视频在线| 91天堂素人约啪| 欧美日韩在线播| 日韩欧美一级片| 欧美一级国产精品| 精品女同一区二区| 国产日韩欧美精品一区| 国产精品久99| 人禽交欧美网站| 国产91在线|亚洲| 欧美天天综合网| 久久综合久久综合久久| 一本大道久久a久久精二百 | 91精品国产综合久久福利| 日韩精品中文字幕一区二区三区 | 欧美日韩免费高清一区色橹橹| 色综合久久中文综合久久牛| 欧美色中文字幕| 欧美放荡的少妇| 午夜一区二区三区视频| 久久精品72免费观看| 国产成人自拍高清视频在线免费播放| 国产精品一区在线观看你懂的| 在线亚洲人成电影网站色www| 欧美电影免费观看高清完整版在线观看 | 免费观看日韩av| 不卡高清视频专区| 精品日韩99亚洲| 亚洲一区二区三区四区在线观看 | 亚洲情趣在线观看| 久久国产精品色婷婷| 99在线热播精品免费|