@@ -0,0 +1,32 @@
|
||||
import { DateTime, identity, ParseResult, Schema } from "effect"
|
||||
|
||||
|
||||
export const DateTimeUtcFromZoned = Schema.transformOrFail(
|
||||
Schema.DateTimeZonedFromSelf,
|
||||
Schema.DateTimeUtcFromSelf,
|
||||
{
|
||||
strict: true,
|
||||
encode: DateTime.setZoneCurrent,
|
||||
decode: zoned => ParseResult.succeed(DateTime.toUtc(zoned)),
|
||||
},
|
||||
)
|
||||
|
||||
export const DateTimeZonedFromUtc = Schema.transformOrFail(
|
||||
Schema.DateTimeUtcFromSelf,
|
||||
Schema.DateTimeZonedFromSelf,
|
||||
{
|
||||
strict: true,
|
||||
encode: zoned => ParseResult.succeed(DateTime.toUtc(zoned)),
|
||||
decode: DateTime.setZoneCurrent,
|
||||
},
|
||||
)
|
||||
|
||||
export const DateTimeUtcFromZonedInput = Schema.transform(
|
||||
Schema.String,
|
||||
Schema.compose(Schema.DateTimeZoned, DateTimeUtcFromZoned),
|
||||
{
|
||||
strict: true,
|
||||
encode: v => v.slice(0, 16),
|
||||
decode: identity,
|
||||
},
|
||||
)
|
||||
Reference in New Issue
Block a user