GVKun编程网logo

将日期(绝对时间)转换为通过Swift在网络上作为数据发送/接收的日期?

8

本文将为您提供关于将日期的详细介绍,我们还将为您解释绝对时间转换为通过Swift在网络上作为数据发送/接收的日期?的相关知识,同时,我们还将为您提供关于C#通过Socket在网络间发送和接收图片的演示

本文将为您提供关于将日期的详细介绍,我们还将为您解释绝对时间转换为通过Swift在网络上作为数据发送/接收的日期?的相关知识,同时,我们还将为您提供关于C#通过Socket在网络间发送和接收图片的演示代码、ios – 在Swift中将日期从GMT 1转换为UTC时出现混乱、ios – 如何将日期字符串从Rails转换为Swift、iPhone:将日期字符串转换为相对时间戳的实用信息。

本文目录一览:

将日期(绝对时间)转换为通过Swift在网络上作为数据发送/接收的日期?

将日期(绝对时间)转换为通过Swift在网络上作为数据发送/接收的日期?

我正在寻找一种生成时间戳的Swifty方法。

我的macOS应用记录了一些数据,并在创建数据时标记了这些数据。然后,数据将通过网络发送(如Data),以在iPad上重建。

是否有任何Swift类可用于生成时间戳?NSDate?NSTimeIntervalSince1970?CFAbsoluteTimeGetCurrent()

要求是:

  1. 存储在尽可能少的字节尽可能时间戳(优先。Int
  2. 与真实的地球时间有些相似(我宁愿不生成自己的时间格式)
  3. 毫秒精度
  4. 快速构建
  5. 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在网络间发送和接收图片的演示代码

C#通过Socket在网络间发送和接收图片的演示代码

下面是小编 jb51.cc 通过网络收集整理的代码片段。

小编小编现在分享给大家,也给大家做个参考。

C#通过Socket在网络间发送和接收图片的演示代码
 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时出现混乱

ios – 在Swift中将日期从GMT 1转换为UTC时出现混乱

当您尝试将“2016-06-23 12:00:00”转换为UTC日期时,我会收到“2016-06-23 10:00:00”

第一个日期是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”替换为“GMT 01”.

“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

ios – 如何将日期字符串从Rails转换为Swift

请耐心等待我,因为我是 Swift的新手:我正在编写一个小应用程序,它调用返回一些数据的API(Rails).我遇到的问题是API提供的日期是这样的:yyyy-MM-dd’T’HH:mm:sssZ我的功能期望yyyy-MM-dd’T’HH:mm:ssZ请注意额外的第二

这是我的功能:

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”

关于如何解决这个问题的任何想法?

解决方法

如果您将SSS用作格式字符串,则可以执行此操作,如下所示.

"yyyy-MM-dd'T'HH:mm:ss.SSSZ"

另见:Date Format Patterns

iPhone:将日期字符串转换为相对时间戳

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:将日期字符串转换为相对时间戳的相关知识,请在本站进行查询。

本文标签: