将时间字符串转换为当天的Unix时间日期

时间:2018-09-20 12:11:57

标签: swift nsdateformatter foundation

如何将字符串小时转换为一天中的毫秒?

例如:

create or replace function regexp_count(text, text)
returns integer language sql as $$
    select count(m)::int
    from regexp_matches($1, $2, 'g') m
$$; 

with example(str) as (
values 
    ('a_b_c'),
    ('a___b'),
    ('abc')
)

select str, regexp_count(str, '_') as single, regexp_count(str, '__') as double
from example

  str  | single | double 
-------+--------+--------
 a_b_c |      2 |      0
 a___b |      3 |      1
 abc   |      0 |      0
(3 rows)

或者:

let strDate = "06:00 PM"

我的代码:

let strDate = "09:00 AM"

例如,我的字符串是:06:00 PM,所以我想将日期设置为今天的毫秒数,即2018年9月20日,星期四,06:00 PM。

2 个答案:

答案 0 :(得分:3)

您可以将DateFormatter的默认日期设置为今天的startOfDay,在解析时间时将格式器的语言环境区域设置为“ en_US_POSIX”,然后可以简单地获取结果日期timeIntervalSince1970并乘以1000:

input()

答案 1 :(得分:2)

首先,您需要分析日期字符串:

let dateString = "06:00 PM"
let formatter = DateFormatter()
formatter.defaultDate = Date()
formatter.dateFormat = "hh:mm a"
formatter.locale = Locale(identifier: "en_US_POSIX")
let date = formatter.date(from: dateString)

然后,您需要开始新的一天:

let calendar = Calendar.current
let start = calendar.startOfDay(for: date)

然后,获取datestart之间的时间间隔:

let timeInterval = date.timeIntervalSince(start)
let milliseconds = timeInterval * 1000.0