

Contents 非表示
実装
2025/1/12 9:41:00 ~ 2025/2/12 9:41:00の期間内は画像を表示させる。
HomeViewModel
import SwiftUI
import SwiftDate
final class HomeViewModel: ObservableObject {
@Published var isShowImage: Bool
init() {
isShowImage = Date().isShowImage()
}
}
extension Date {
func isShowImage() -> Bool {
return isInRange(
date: DateInRegion("2025/1/12 9:41:00", region: .JST)!.date, // 範囲の開始日(2025年1月12日9:41AM JST)
and: DateInRegion("2025/2/12 9:41:00", region: .JST)!.date, // 範囲の終了日(2025年2月12日9:41AM JST)
orEqual: true, // 開始日と終了日を範囲に含める
granularity: .second // 範囲の粒度(秒)
)
}
}
extension Region {
static var JST: Region {
// カレンダー(グレゴリオ暦)、タイムゾーン(Asia/Tokyo)、ロケール(英語)で地域を作成
return Region(calendar: Calendar(identifier: .gregorian),
zone: Zones.asiaTokyo.toTimezone(),
locale: Locale(identifier: "en_US_POSIX"))
}
}
HomeView
import SwiftUI
struct HomeView: View {
@StateObject private var viewModel = HomeViewModel()
var body: some View {
VStack {
Label(viewModel.isShowImage ? "Date in Range" : "Date out of Range", systemImage: "calendar")
.font(.title)
.padding()
if viewModel.isShowImage {
Image("img_pizza")
.resizable()
.scaledToFit()
}
}
}
}