本文将为您提供关于将日期的详细介绍,我们还将为您解释绝对时间转换为通过Swift在网络上作为数据发送/接收的日期?的相关知识,同时,我们还将为您提供关于C#通过Socket在网络间发送和接收图片的演示
本文将为您提供关于将日期的详细介绍,我们还将为您解释绝对时间转换为通过Swift在网络上作为数据发送/接收的日期?的相关知识,同时,我们还将为您提供关于C#通过Socket在网络间发送和接收图片的演示代码、ios – 在Swift中将日期从GMT 1转换为UTC时出现混乱、ios – 如何将日期字符串从Rails转换为Swift、iPhone:将日期字符串转换为相对时间戳的实用信息。
本文目录一览:- 将日期(绝对时间)转换为通过Swift在网络上作为数据发送/接收的日期?
- C#通过Socket在网络间发送和接收图片的演示代码
- ios – 在Swift中将日期从GMT 1转换为UTC时出现混乱
- ios – 如何将日期字符串从Rails转换为Swift
- iPhone:将日期字符串转换为相对时间戳
将日期(绝对时间)转换为通过Swift在网络上作为数据发送/接收的日期?
我正在寻找一种生成时间戳的Swifty方法。
我的macOS应用记录了一些数据,并在创建数据时标记了这些数据。然后,数据将通过网络发送(如Data
),以在iPad上重建。
是否有任何Swift类可用于生成时间戳?NSDate?NSTimeIntervalSince1970?CFAbsoluteTimeGetCurrent()
要求是:
- 存储在尽可能少的字节尽可能时间戳(优先。
Int
) - 与真实的地球时间有些相似(我宁愿不生成自己的时间格式)
- 毫秒精度
- 快速构建
- iOS 9以上版本,macOS 10.10以上版本
答案1
小编典典您可以Date
将其转换为Data
(8字节浮点数)并将其发送回Date
如下:
extension Numeric { var data: Data { var source = self return .init(bytes: &source, count: MemoryLayout<Self>.size) } init<D: DataProtocol>(_ data: D) { var value: Self = .zero let size = withUnsafeMutableBytes(of: &value, { data.copyBytes(to: $0)} ) assert(size == MemoryLayout.size(ofValue: value)) self = value }}
extension UInt64 { var bitPattern: Double { .init(bitPattern: self) }}
extension Date { var data: Data { timeIntervalSinceReferenceDate.bitPattern.littleEndian.data } init<D: DataProtocol>(data: D) { self.init(timeIntervalSinceReferenceDate: data.timeIntervalSinceReferenceDate) }}
extension DataProtocol { func value<N: Numeric>() -> N { .init(self) } var uint64: UInt64 { value() } var timeIntervalSinceReferenceDate: TimeInterval { uint64.littleEndian.bitPattern } var date: Date { .init(data: self) }}
游乐场测试
let date = Date() // "Nov 15, 2019 at 12:13 PM"let data = date.data // 8 bytesprint(Array(data)) // "[25, 232, 158, 22, 124, 191, 193, 65]\n"let loadedDate = data.date // "Nov 15, 2019 at 12:13 PM"print(date == loadedDate) // "true"
C#通过Socket在网络间发送和接收图片的演示代码
下面是小编 jb51.cc 通过网络收集整理的代码片段。
小编小编现在分享给大家,也给大家做个参考。
using System; using System.Collections.Generic; using System.Text; using System.Net.sockets; using System.Net; using System.IO; namespace ConsoleApplication1 { Class Program { static void Main (String[] args) { // 1. to create a socket Socket sListen = new Socket (AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); // 2. Fill IP IPAddress IP = IPAddress.Parse ("127.0.0.1"); IPEndPoint IPE = new IPEndPoint (IP,4321); // 3. binding sListen.Bind (IPE); // 4. Monitor Console.WriteLine ("Service is listening ..."); sListen.Listen (2); // 5. loop to accept client connection requests while (true) { Socket clientSocket; try { clientSocket = sListen.Accept (); } catch { throw; } // send data to the client //clientSocket.Send (Encoding.Unicode.GetBytes ("I am a server,you there?? !!!!")); // send the file byte[] buffer = ReadImageFile ("1.jpg"); clientSocket.Send (buffer,buffer.Length,SocketFlags.None); Console.WriteLine ("Send success!"); } } private static byte[] ReadImageFile (String img) { FileInfo fileinfo = new FileInfo (img); byte[] buf = new byte[fileInfo.Length]; FileStream fs = new FileStream (img,FileMode.Open,FileAccess.Read); fs.Read (buf,buf.Length); fs.Close (); //fileInfo.Delete (); GC.ReRegisterForFinalize (fileinfo); GC.ReRegisterForFinalize (fs); return buf; } } }客户端接收和保存图片的代码
using System; using System.Collections.Generic; using System.Text; using System.Net.sockets; using System.Net; using System.IO; namespace ConsoleApplication2 { Class Program { static void Main (String[] args) { // 1. to create a socket Socket S = new Socket (AddressFamily.InterNetwork,ProtocolType.Tcp); // 2. fill in the remote IP IPAddress IP = IPAddress.Parse ("127.0.0.1"); IPEndPoint IPE = new IPEndPoint (IP,4321); Console.WriteLine ("started connection service ...."); // 3. connect to the server s.Connect (IPE); // 4. receive data byte[] buffer = new byte[1000000]; s.Receive (buffer,SocketFlags.None); //var Msg = Encoding.Unicode.GetString (buffer); //Console.WriteLine ("received message: (0)",msg); Console.WriteLine ("Receive success"); FileStream fs = File.Create ("1.jpg"); fs.Write (buffer,buffer.Length); fs.Close (); Console.ReadKey (); } } }
以上是小编(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给程序员好友。
ios – 在Swift中将日期从GMT 1转换为UTC时出现混乱
第一个日期是GMT 1,我想转换为UTC.如果我没弄错GMT 0 == UTC所以12:00应该是11:00对吗?但我总是得到10点.为什么会这样,我该如何正确转换它?
我在操场上和实际设备上都试过这个
这是我使用的代码:
class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view,typically from a nib. let datestring:String = "2016-06-23 12:00:00" print("1: "+datestring) print("2: "+convertDatetoUTC(datestring)) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // dispose of any resources that can be recreated. } func convertDatetoUTC(_ datestring:String) -> String { let dateForm = DateFormatter() dateForm.dateFormat = "yyyy-MM-dd HH:mm:ss" dateForm.timeZone = TimeZone(abbreviation: "GMT+1") print(TimeZone.current.abbreviation()!) let date = dateForm.date(from: datestring) dateForm.timeZone = TimeZone(abbreviation: "UTC") let date1 = dateForm.string(from: date!) return date1 } }
输出:
1: 2016-06-23 12:00:00 GMT+1 2: 2016-06-23 10:00:00
解决方法
“GMT 1”不是有效的时区缩写:
let tz = TimeZone(abbreviation: "GMT+1") print(tz) // nil
因此,在
dateForm.timeZone = TimeZone(abbreviation: "GMT+1")
你将dateForm.timeZone设置为nil,这意味着日期
string在您的默认(本地)时区中解释.
同
dateForm.timeZone = TimeZone(abbreviation: "GMT+01")
你会得到预期的结果.或者,创建时区
从(数字)GMT偏移量或其标识符:
dateForm.timeZone = TimeZone(secondsFromGMT: 3600) dateForm.timeZone = TimeZone(identifier: "GMT+0100")
附录(回应您的意见):
TimeZone(identifier: "GMT+0100") TimeZone(identifier: "Europe/Berlin")
是不同的时区.第一个使用固定的GMT偏移量为1小时,第二个是区域中的时区(在本例中为德国),并且与UTC相差一到两个小时,具体取决于是否夏令时在指定日期有效.
ios – 如何将日期字符串从Rails转换为Swift
这是我的功能:
public func dateFromString(date: String,format: String) -> NSDate { if dateFormatter == nil { dateFormatter = NSDateFormatter() } dateFormatter!.dateFormat = format return dateFormatter!.dateFromString(date)! }
在控制台上,当我尝试运行应用程序时,我得到了这个:
date String“2015-04-13T12:48:23.310Z”
格式字符串“yyyy-MM-dd’T’HH:mm:ssZ”
关于如何解决这个问题的任何想法?
解决方法
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"
另见:Date Format Patterns
iPhone:将日期字符串转换为相对时间戳
Thu,21 May 09 19:10:09 -0700
我想将它转换为相对时间戳像’20分钟前’或’3天前’。
使用Objective-C for iPhone的最好的方法是什么?
解决方法
-(Nsstring *)dateDiff:(Nsstring *)origDate { NSDateFormatter *df = [[NSDateFormatter alloc] init]; [df setFormatterBehavior:NSDateFormatterBehavior10_4]; [df setDateFormat:@"EEE,dd MMM yy HH:mm:ss VVVV"]; NSDate *convertedDate = [df dateFromString:origDate]; [df release]; NSDate *todayDate = [NSDate date]; double ti = [convertedDate timeIntervalSinceDate:todayDate]; ti = ti * -1; if(ti < 1) { return @"never"; } else if (ti < 60) { return @"less than a minute ago"; } else if (ti < 3600) { int diff = round(ti / 60); return [Nsstring stringWithFormat:@"%d minutes ago",diff]; } else if (ti < 86400) { int diff = round(ti / 60 / 60); return[Nsstring stringWithFormat:@"%d hours ago",diff]; } else if (ti < 2629743) { int diff = round(ti / 60 / 60 / 24); return[Nsstring stringWithFormat:@"%d days ago",diff]; } else { return @"never"; } }
今天的关于将日期和绝对时间转换为通过Swift在网络上作为数据发送/接收的日期?的分享已经结束,谢谢您的关注,如果想了解更多关于C#通过Socket在网络间发送和接收图片的演示代码、ios – 在Swift中将日期从GMT 1转换为UTC时出现混乱、ios – 如何将日期字符串从Rails转换为Swift、iPhone:将日期字符串转换为相对时间戳的相关知识,请在本站进行查询。
本文标签: